PGFplotstable:使用包含 4 列的 csv 文件

PGFplotstable:使用包含 4 列的 csv 文件

假设我有一个 csv 文件,其中没有标题,只有数据。第一列是时间(x 轴),接下来的 3 列分别构成一个不同的集合;也就是说,plot(t, col1) 是一组数据,plot(t, col2) 等。

我可以使用以下命令加载 csv

\pgfplotstableread[col sep = comma]{data.csv}\mydata

那么我该如何绘制每条线?

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat = 1.10}
\pgfplotstableread[col sep = comma]{fexam1cdata.csv}\mydata
\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    legend pos = south east,
    xmin = 0,
    xmax = 20,
    ymin = 0,
    ymax = 2.5
    ]
    \addplot table[x = time, y = 2nd col]{\mydata};
    \addplot table[x = time, y = 3rd col]{\mydata};
    \addplot table[x = time, y = 4th col]{\mydata};
    \addplot table[x = time, y = 5th col]{\mydata};
    \legend{Actual, Measured, Est $Q = 0.01$, Est $Q = 0.1$}
  \end{axis}
\end{tikzpicture}
\end{document}

pgfplots每列都有内部标签名称吗?我可以将其更改为时间、实际、测量、Q1、Q2 吗?

在上面的代码中,我使用了x = timey = ith col来显示我想要的内容。这些并不正确,而且无法编译,因为我不知道如何使用 来区分 csv 文件中的列pgfplots

答案1

如果您的 csv 文件中没有列名(即在标题行中),则可以使用列索引(从零开始)来引用它们。请参阅 1.10 版第 49 页pgfplots 手册

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

如果要使用常用选项绘制多个事物,则可以在选项中指定选项axis,例如指定x index

...
\begin{axis}[
    legend pos = south east,
    xmin = 0, xmax = 20,
    ymin = 0, ymax = 2.5,
    table/x index={0},
    ]
    \addplot table[y index={1}]{\mydata};
...

如果第一行有任何字母字符,您还必须header = false在加载表格时或在轴选项中指定。这包括nan第一行是否有。

相关内容