我想分析以下格式的数据文件
0.01 1.00 11.00 21.00
0.02 2.00 12.00 22.00
0.03 3.00 13.00 23.00
0.04 4.00 14.00 24.00
0.05 5.00 15.00 25.00
我想创建一个pgfplots
使用第一列作为 x 值的图。y 值应通过将其他几列相加或相减来获得 - 有点像电子表格应用程序可以做到的那样。如何使用来实现这一点pgfplots
?如果可能的话,是否可以轻松地用线而不是列来做同样的事情,或者执行其他简单的数学计算(乘法、取对数等)?
答案1
您可以使用\addplot table [y expr=...] {<inline table or table macro>};
来指定要绘制的内容。如果您的列有名称,则可以使用 来访问它们y expr
。\thisrow{<column name>}
如果您想使用列索引,请使用\thisrowno{<column number>}
。如果只需加载一次表而不是将其提供给每个绘图,请使用 命令\pgfplotstableread{<table contents>}<\tablemacro>
。
\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable} % For \pgfplotstableread
\pgfplotstableread{
0.01 1.00 11.00 21.00
0.02 2.00 12.00 22.00
0.03 3.00 13.00 23.00
0.04 4.00 14.00 24.00
0.05 5.00 15.00 25.00
}\datatable
\begin{document}
\begin{tikzpicture}
\begin{axis}[ymin=0, ymax=60]
\addplot table [y expr=\thisrowno{1} + \thisrowno{2} + \thisrowno{3}] {\datatable}; \addlegendentry{$1 + 2 + 3$}
\addplot table [y expr=\thisrowno{2} - \thisrowno{1}] {\datatable}; \addlegendentry{$2-1$}
\end{axis}
\end{tikzpicture}
\end{document}