使用 pgfplotstable 预加载和预处理数据,以便与 \addplot 一起使用

使用 pgfplotstable 预加载和预处理数据,以便与 \addplot 一起使用

我正在为各种数据集创建组块。除了一些 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}

在此处输入图片描述

相关内容