对于我的实验报告,我经常需要对我的数据进行复杂的拟合和转换(例如拟合柯西分布或 FFT)。使用拟合gnuplot
有时会失败,而将其直接包含在\addplot
-命令中真的很麻烦。例如,我无法为不同的图设置不同的线型
\addplot gnuplot[raw gnuplot] {
plot sin(x), cos(x);
}
它们都具有相同的线型。因此,如果我进行复杂拟合,我无法在一个\addplot
命令内完成,这迫使我重复所有变量和内容。这就是为什么我想回到外部拟合。因此,如果能够从文件中读取数学表达式,这将非常有用,例如
\addplot expression[from file] {math.dat}
其中math.dat
产生预期格式的表达式。
当前版本可以实现这个功能吗pgfplots
?
答案1
您可以将一个或多个表达式写入表中,并使用以下方式访问表的元素\pgfplotstablegetelem
:
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\pgfplotstableread{
expression
x^2
x^3
}\loadedtable
\begin{tikzpicture}
\begin{axis}
\pgfplotstablegetelem{0}{expression}\of{\loadedtable}
% \pgfplotsretval is frequently overwritten.
% copy its value to "\expression":
\let\expression=\pgfplotsretval
\addplot {\expression};
\pgfplotstablegetelem{1}{expression}\of{\loadedtable}
\let\expression=\pgfplotsretval
\addplot {\expression};
\end{axis}
\end{tikzpicture}
\end{document}
我的示例包含内联表数据,这并不完全适合您的用例。
不过你也可以写
\pgfplotstableread{math.dat}\loadedtable
甚至
\pgfplotstablegetelem{1}{expression}\of{math.dat}
pgfplots 将自动检查参数是否是加载的表。