我正在为各种数据集创建组块。除了一些 y 值外,它们都共享相同的 x 值。过去我使用类似这样的方法来完成任务:
\addplot table [x index = 0, y expr = \thisrowno{1}*10 ]{data.txt};
但对我来说,为每个图重新加载数据似乎有些过头了。我已经发现我可以使用:
\pgfplotstableread[]{data.txt}\data
预加载然后绘图
\addplot table [x index = 0, y expr = \thisrowno{1}*10 ] from \data;
为了便于阅读,我现在想使用类似
\addplot table [x = f1, y = f2 ] from \data;
就像我可以一样,如果我的文件看起来像:
f1 f2
0 0
1 2
2 4
但是我的文件标题是无法使用的垃圾,我无法从中获取任何列名。此外,我需要使用一些因素预处理我的数据,所以我需要\thisrowno{1}
或\thisrow{f1}
,对吗?但我想做所有这些提前,在第一个addplot
- 我怎样才能做到这一点?
就像是:
\pgfplotstableread[]{data.txt}\data
f1 = \thisrowno{0}*10 from \data # pseudo code
f2 = \thisrowno{1}*42 from \data # pseudo code
\addplot table [x = f1, y = f2 ] from \data;
我已经尝试用
\pgfplotstableset{columns={f1,f2}}
这没有给我带来任何错误,但也没有任何效果。
平均能量损失
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{document}
\begin{tikzpicture}
\pgfplotstableread[skip first n=2]{data.txt}\data
\begin{axis}
\addplot table [x index = 0, y expr = \thisrowno{1}*10 ] from \data;
\end{axis}
\end{tikzpicture}
\end{document}
和数据文件data.txt
rubbish
rubbish
0 0
1 2
2 4
答案1
您正在寻找\pgfplotstablecreatecol
。
\begin{filecontents*}{data.txt}
rubbish
rubbish
0 0
1 2
2 4
\end{filecontents*}
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{document}
\begin{tikzpicture}
\pgfplotstableread[skip first n=2]{data.txt}\data
\pgfplotstablecreatecol[create col/expr={\thisrowno{0}}]{f1}\data
\pgfplotstablecreatecol[create col/expr={\thisrowno{1}*10}]{f2}\data
\begin{axis}
\addplot table [x = f1, y = f2] from \data;
\end{axis}
\end{tikzpicture}
\end{document}