pgfplots 与 gnuplot

pgfplots 与 gnuplot

我在使用 latex 实现 gnuplot 代码时遇到了问题。我使用 PdfLatex 并带上参数“--enable-write18”。

以下代码应该适用于第一个注释掉的行%plot 'data.dat' u 1:2;,但不能适用于%plot 'data.dat' u 1:(f(\$2))。建议的解决方案plot 'data.dat' u 1:(f(\string$2));无法处理nan中的值data.dat。我该如何解决这个问题?是否有机会从外部文件执行gnuplot代码TeX?也许这可以解决问题,我可以使用$而不是\$\string$

它应该看起来像第二张图片。

\documentclass[11pt]{article}
\usepackage{pgfplots}
\usepackage{filecontents}
\usepackage{verbatim}

\begin{filecontents*}{data.dat}
time    w1  e1  w2  e2
1   3019    40  nan nan
2   3045    34  nan nan
3   3100    50  3104    24
4   3500    13  3498    90
5   3800    90  3803    12
6   NaN NaN 3980    43
7   NaN NaN 3985    80
8   3810    10  3988    34
\end{filecontents*}

\begin{document}


\begin{tikzpicture}
    \begin{axis} [
compat=newest,
y tick label style={/pgf/number format/1000 sep=},
ymin=2900,
ymax=4400]


\addplot gnuplot
[raw gnuplot,id=bal,mark=none,very thick]{
set datafile missing 'NaN';
set xrange  [1:8];
set yrange [3000:4500];
f(x)=x;
plot 'data.dat' u 1:(f(\string$2));
%plot 'data.dat' u 1:2;
%plot 'data.dat' u 1:(f(\$2))
    };

\end{axis}

\end{tikzpicture}

\end{document}

坏的

好的

答案1

我不确定pcygni.txt文件是什么,而且我没有得到任何输出,但你的主要问题是\$选择字体和排版的命令,$但是(我认为)你想将一个传递$给 gnuplot,所以这是错误的引用。

尽管这可能不是您想要的情节,但运行起来没有错误。

\documentclass[11pt]{article}
\usepackage{pgfplots}
\usepackage{filecontents}
\usepackage{verbatim}

\begin{filecontents*}{data.dat}
time    w1  e1  w2  e2
1   3019    40  nan nan
2   3045    34  nan nan
3   3100    50  3104    24
4   3500    13  3498    90
5   3800    90  3803    12
6   nan nan 3980    43
7   nan nan 3985    80
\end{filecontents*}

\begin{document}

\begin{tikzpicture}
    \begin{axis} [
compat=newest,
y tick label style={/pgf/number format/1000 sep=},
ymin=2900,
ymax=4400]


\addplot gnuplot
[raw gnuplot,id=bal,mark=none,very thick]{
set xrange  [1:8];
set yrange [3000:4500];
f(x)=3600;
plot 'data.dat' u 1:(f(\string$2));
plot 'data.dat' u 1:2
    };

\end{axis}
\end{tikzpicture}

\end{document}

相关内容