我有以下内容:
\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 有限的内存来说更容易。
尝试进行一些实验并报告。