从 tikz 中的 .txt 导入选定的数据

从 tikz 中的 .txt 导入选定的数据

正如我在标题中所说,我在导入数据方面遇到了困难。我获得的实验数据位于 .txt 文件中,其结构如下:

xxxxxxxxxxx

yyyyyyyyyyy

zzzzzzzzzzz

N   a   b   c    
1 3 4 5       
2 6 7 8        
3 9 8 7        
4 6 5 4   

xxxxxxxxxxx

yyyyyyyyyyy

zzzzzzzzzzz   

x、y 和 z 是图中未使用的文本,所以我想跳过文件顶部和底部的行 - 只有表格才是重要的。现在我必须手动删除这些行才能使用下面的代码

\documentclass[paper=a4,ngerman,xcolor=dvipsnames]{article}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage[]{pgfplots}
\usepackage[]{tikz}

\pgfplotsset{compat=1.9}
\pgfplotsset{every axis label/.append style={font=\large}}
\pgfplotsset{every tick label/.append style={font=\large}}
\begin{document}
    \begin{figure}
    \begin{tikzpicture}
        \begin{axis}[]
\addplot table [y=c,x=b]{mydata.txt};
        \end{axis}
    \end{tikzpicture}
\end{document}

我还想知道:我可以进行一个简单的计算吗?因为我想绘制行的负值“b“来自 mydata.txt”

例如这样:

....

\addplot table [y=c,x=g]{mydata.txt};

其中 g=b*(-1)

....

答案1

正如 Torbjørn T. 所提到的他的评论您可以使用x expr并对y expr表值进行一些数学运算。

他还提到了一种忽略起始行的方法,即skip first n。另一种方法是将注释字符分配给行实际的表格开始,这也适用于行桌子。但我不知道有什么键可以忽略非表格線。

    \begin{filecontents}{testOne.txt}
        I am a header line
        without a comment character

        a   b
        1   2
        2   3
    \end{filecontents}
    \begin{filecontents}{testTwo.txt}
        % I am a header line
        % with a comment character
        %
        a   b
        2   4
        3   5
    \end{filecontents}
    \begin{filecontents}{testThree.txt}
        a   b
        3   6
        4   7
        %
        % I am a bottom line
        % with a comment character
    \end{filecontents}
    \begin{filecontents}{testFour.txt}
        a   b
        3   6
        4   7

        I am a bottom line
        without a comment character
    \end{filecontents}
\documentclass[border=2pt]{standalone}
\usepackage{pgfplots}
\begin{document}
    \begin{tikzpicture}
        \begin{axis}
            % these three work fine
            \addplot table [skip first n=3] {testOne.txt};
            \addplot table [x=a,y expr=-\thisrow{b}] {testTwo.txt};
            \addplot table {testThree.txt};

%            % this will lead to an error, because PGFPlots first tries to read
%            % the table before skipping the given indices
%            \addplot table [skip coords between index={2}{4}] {testFour.txt};
        \end{axis}
    \end{tikzpicture}
\end{document}

该图显示了上述代码的结果

相关内容