pgfplots:从文件中读取表达式

pgfplots:从文件中读取表达式

对于我的实验报告,我经常需要对我的数据进行复杂的拟合和转换(例如拟合柯西分布或 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 将自动检查参数是否是加载的表。

相关内容