解决方案:

解决方案:

我有一个简单的数据文件,由两列(x 和 y 坐标)组成。我希望文件的第一行是列的名称。我希望用户可以选择指定他/她认为合适的列名,包括一列的多个单词。例如:

Number of points    Values
10    100
20    400
30    1200
40    2345
etc...

当使用单个单词作为列名时,我可以让它工作(如预期的那样),但是一旦我引入多个单词,我就无法让 latex 编译。我在 latex 中尝试了以下操作:

\addplot table [only marks, x={Number of Points}, y={Time}] {...}
\addplot table [only marks, x=${Number of Points}$, y=${Time}$] {...}
\addplot table [only marks, x="Number of Points", y=Time] {...}

我也尝试过其他变体,但没有成功。我一直收到错误:

“抱歉,无法从表中检索‘点数’……”

如有任何想法,我将不胜感激。

答案1

您可以将有问题的列名括在括号中:

    {Number of points} Values

以下是完整的 MWE:

% arara: pdflatex
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}
  \begin{axis}
    \addplot[only marks] table[x=Number of points,y=Values] {%
    {Number of points} Values
      10 100
      20 400
      30 1200
      40 2345
    };
  \end{axis}
\end{tikzpicture}
\end{document}

答案2

问题在于您使用空格来分隔列名中的单词和列本身。如果您使用空格以外的其他东西来分隔列,则效果很好,甚至无需用分隔符将列名括起来。

在这个例子中,我使用了逗号,并且我pgfplots使用以下方式让列分隔符知道是逗号col sep=comma

解决方案:

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}
\begin{tikzpicture}
  \begin{axis}
    \addplot[only marks] table[col sep=comma,x=Number of points,y=Values] {%
      Number of points, Values
      10, 100
      20, 400
      30, 1200
      40, 2345
    };
  \end{axis}
\end{tikzpicture}
\end{document}

输出

相关内容