当数据列用逗号分隔时绘制多个函数 pgfplots

当数据列用逗号分隔时绘制多个函数 pgfplots

我有一个csv文件,其中有 2 个“列”,用逗号分隔。因此该.csv文件看起来像

0.123,0.3232
1.244,1.325

上述数字分别是 x=0 和 x=1 处的“y 值”,即第一行是 x=0 处两个不同函数的 y 值,第二行是 x=1 处相同函数的 y 值,依此类推。实际csv文件有 8 列,包含数千个 x 点。

我的问题是如何在同一个图中绘制上述函数(线条上使用不同的颜色)?

我的 ME 是

\documentclass[tikz]{standalone}
\usepackage{pgfplots,pgfplotstable,filecontents}
\pgfplotsset{compat = newest}
\pgfplotstableread[col sep = comma]{kDist.csv}\mydata
\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    legend pos = south east,
    xmin = 0, xmax = 1000,
    ymin = 0, ymax = 200,
    ]
    \addplot table[x index = {0}, y index = {1}]{\mydata};
    \legend{Actual}
  \end{axis}
\end{tikzpicture}
\end{document}

我的包含所有数据的 csv 文件在哪里kDist.csv。ME 给出了完全错误的结果,只有一条(闭合的)线,而不是 8 条独立的线。

答案1

您可以x expr再次使用:

\addplot table[x expr=\coordindex,y index=0]{\mydata};
\addplot table[x expr=\coordindex,y index=1]{\mydata};

代码:

\documentclass{standalone}
\usepackage{pgfplotstable,filecontents}
\pgfplotsset{compat = 1.12}
\pgfplotstableread[col sep = comma]{%
    0.123,0.3232
    1.244,1.325
}\mydata

    \begin{document}
\begin{tikzpicture}
  \begin{axis}[
    legend pos = south east,
    xmin = 0, xmax = 2,
    ymin = 0, ymax = 2,
    ]
    \addplot table[x expr=\coordindex,y index=0]{\mydata};
    \addplot table[x expr=\coordindex,y index=1]{\mydata};
    \legend{Actual,ficticious}
  \end{axis}
\end{tikzpicture}
    \end{document}

在此处输入图片描述


如果您有很多列,那么\pgfplotsinvokeforeach可能会更好。

\documentclass{standalone}
\usepackage{pgfplotstable,filecontents}
\pgfplotsset{compat = 1.12}
\pgfplotstableread[col sep = comma]{%
    0.123,0.3232, 0.36, 0.58, 0.45, 0.21, 0.56
    1.244,1.325,  0.75, 0.85, 0.58, 0.78, 0.98
}\mydata

    \begin{document}
\begin{tikzpicture}
  \begin{axis}[
    legend pos = south east,
    xmin = 0, xmax = 2,
    ymin = 0, ymax = 2,
    ]
    \pgfplotsinvokeforeach{0,...,6}{
            \addplot table[x expr=\coordindex,y index=#1]{\mydata};}
    \legend{Actual,ficticious}
  \end{axis}
\end{tikzpicture}
    \end{document}

在此处输入图片描述

答案2

您的 MWe 工作正常...您只是将最大值设置得太大,以至于您的图表几乎在一点上崩溃 :-)。尝试:

\documentclass[tikz]{standalone}
\usepackage{pgfplots,pgfplotstable,filecontents}
\pgfplotsset{compat = newest}
\pgfplotstableread[col sep = comma]{%
    0.123,0.3232
    1.244,1.325
}\mydata

    \begin{document}
\begin{tikzpicture}
  \begin{axis}[
    legend pos = south east,
    xmin = 0, xmax = 2,
    ymin = 0, ymax = 2,
    ]
    \addplot table[x index = 0, y index = 1]{\mydata};
    \legend{Actual}
  \end{axis}
\end{tikzpicture}
    \end{document}

在此处输入图片描述

相关内容