我正在尝试重现以下代码这个答案为了方便起见,我在这里粘贴了@TikZling 建议的修复方法:
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{pgfplotstable}
\pgfplotstableset{%
col sep=semicolon,
x index=0,
y index=1,
header=false
}%
\begin{filecontents}[overwrite]{XYZ.csv}
2016; 1; 33e-9
2016; 2; 199e-9
2016; 3; 966e-9
2016; 4; 110e-9
2015; 1; 199e-9
2015; 2; 966e-9
2015; 3; 110e-9
2015; 4; 104e-9
2014; 1; 199e-9
2014; 2; 965e-9
2014; 3; 110e-9
2014; 4; 104e-9
2006; 1; 2349e-9
2006; 2; 6528e-9
2006; 3; 18405e-9
2006; 4; 17250e-9
1993; 1; 1167453e-9
1993; 2; 2376539e-9
1993; 3; 2262076e-9
1993; 4; 2262076e-9
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}[view = {0}{90}]%
\addplot3[%
surf,shader=interp,opacity=0.8
] table {XYZ.csv};
\addplot3[%
contour gnuplot={
levels={.0000001,.000001,.00001,.0001,.001,.01,.1},
draw color=black,
contour label style={/pgf/number format/std},
},
] table {XYZ.csv};
\end{axis}
\end{tikzpicture}
\end{document}
通过编译
$ lualatex --shell-escape contour.tex
产生此警告
Package pgfplots Warning: the current plot has no coordinates (or all have been
filtered away) on input line 56.
并且.table
gnuplot 返回的文件同样是空的:
$ cat contour_contourtmp0.table
# Surface 0 of 1 surfaces
# Curve title: ""contour_contourtmp0.dat""
我在 Arch Linux 上使用 TeXlive 2020,$ gnuplot
可在命令行上使用。
答案1
事实证明我的系统~/.gnuplot
在主目录中有一个指定的默认配置文件set datafile separator comma
。
这导致数据被contour_contourtmp0.dat
解释为逗号分隔,从而不可避免地产生没有有效的数据点。