无法加载条形图文件

无法加载条形图文件

我有以下内容:

\documentclass{article}

\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{filecontents}

\begin{filecontents}{testdata.csv}
  Probe      Mittelwert Standardabweichung
  well_PS         100.00       0.00
  PL-04-021_3      12.19       2.47
  Dextran         104.63       6.28
\end{filecontents}

\pgfplotstableread[col sep=space]{testdata.csv}\datatable

\begin{document}

  \begin{tikzpicture}
    \begin{axis}
      \addplot table[x=Probe,y=Mittelwert]{\datatable};
    \end{axis}
  \end{tikzpicture}
\end{document}

但是我不断收到pgfplotstable类似错误

! Package pgfplots Error: Could not read table file 'testdata.csv'. In case you intended to provide inline data: maybe TeX screwed up your end-of-lines? Try `row sep=crcr' and terminate your lines with `\\' (refer to the pgfplotstable manual for details).

我做错了什么?是否有可能获得更详细的错误输出?

更新

我找到了这个关联它解释了如何读取字符串列,但是我无法读取我的.csv 文件,尽管在.tex 中硬编码它可以工作。

答案1

这里有两个问题:首先,您尝试使用字符串(“Probe”列)作为 x 坐标。默认情况下,PGFPlots 不知道如何处理它(应该将 的点well_PS绘制在 之前还是之后Dextran?)。一个优雅的解决方法是简单地使用每个数据点的坐标索引作为其 x 坐标,并使用“Probe”列中的文本作为刻度标签。您可以使用以下方法执行此操作

\addplot table[x expr=\coordindex,y=Mittelwert]{\datatable};

绘制数据,将

xtick=data,
xticklabels from table={\datatable}{Probe}

在轴选项中设置标签。

然而,我们遇到了第二个问题:您的“探测”列中有下划线,这会导致错误Missing $ inserted,因为默认情况下,数学模式下下划线用于开始下标。解决此问题的最简单方法是将数据表中的下划线替换为\_

\documentclass{article}

\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{filecontents}

\begin{filecontents}{testdata.csv}
  Probe      Mittelwert Standardabweichung
  well\_PS         100.00       0.00
  PL-04-021\_3      12.19       2.47
  Dextran         104.63       6.28
\end{filecontents}

\pgfplotstableread[col sep=space]{testdata.csv}\datatable

\begin{document}
  \begin{tikzpicture}
    \begin{axis}[
            xtick=data,
            xticklabels from table={\datatable}{Probe},
        ]
     \addplot table[x expr=\coordindex,y=Mittelwert]{\datatable};
    \end{axis}
  \end{tikzpicture}
\end{document}

答案2

据我所知,您的问题与换行符有关。Linux
和 Windows 中换行符的方式不同。也许您\l\n以前在其他编程语言中见过这种老办法。基本上,Windows 希望您告诉它移动到下一行和左行,而 Linux 则假设 - 您想向下移动,那么您也想向左移动。这确实可以节省一点硬盘空间,但偶尔也会导致问题。
如果您像这样定义内联数据,TeX 可能会以错误的行结尾编写此数据。我不确定这是否有帮助,但也许更改文件格式和/或您\usepackage[T1]{inputenc}可以解决问题。您选择的编辑器将有助于处理文件格式。只需说另存为即可查看选项。
抱歉,但这是一个很难重现的问题。
如果其他一切都失败了,您真的必须\\在每一行的末尾添加并将选项添加row sep=crcr到您的pgfplotstableread.

此外,通常建议不要以这种方式包含表格。只需使用 绘制它们\addplot table [x=Probe,y=Mittelwert,col sep=space] {testdata.csv}。这对 TeX 有限的内存来说更容易。

尝试进行一些实验并报告。

相关内容