使用 gnuplot/pgfplots/pgfplotstable 绘制带有外部文件参数的函数

使用 gnuplot/pgfplots/pgfplotstable 绘制带有外部文件参数的函数

如果我有一张表,如何获取表值并将它们用作 gnuplot 中 pgfplots 绘图的参数?特别是,如何从多行中绘制具有相同函数形式的多条曲线?

答案1

编辑:我执行此操作的第一种方法是使用\def命令而不是\pgfmathsetmacro,但这不起作用。

方法:

  1. 使用以下方式加载表格\pgfplotstableread
  2. 使用 获取行数\pgfplotstablegetrowsof,然后将该数字减一。
  3. 在 中axis,使用\foreach迭代每一行,直到之前找到的最大值
  4. 用于检索当前行和正确的参数,使用\pgfplotstablegetelem设置变量(\a\b\pgfmathsetmacro
  5. gnuplot在命令中使用变量

代码:

\documentclass{standalone}               

\usepackage{pgfplots,pgfplotstable,tikz}
\usepackage{filecontents}

\begin{filecontents}{data.dat}
a b
1 3
2 2
3 1
4 0
5 0.5
3 2
1 9
2 4
\end{filecontents}
\begin{document}

\pgfplotstableread{data.dat}\datafile

\pgfplotstablegetrowsof{\datafile}
\pgfmathsetmacro\adjrows{\pgfplotsretval -1}

\begin{tikzpicture}
\begin{axis}

\foreach \rownum in {0,...,\adjrows}
{
\pgfplotstablegetelem{\rownum}{a}\of{\datafile} 
\pgfmathsetmacro{\a}{\pgfplotsretval}
\pgfplotstablegetelem{\rownum}{b}\of{\datafile} 
\pgfmathsetmacro{\b}{\pgfplotsretval}

\addplot[raw gnuplot] gnuplot{
  set xrange [0:10];
  set samples 100;
  f(x) = \a*x+\b*x*x;
  plot f(x);
};
}
\end{axis}
\end{tikzpicture}

\end{document}

多条线路,相同的功能形式

相关内容