我遇到了非常类似的问题pgfplotsinvokeforeach 使用参数当您有井号时,例如comment chars
。Python 使用此字符进行注释,因此我想在列定义中使用它或将其注释掉。
我想让你了解一下我用 Python 做什么:
import numpy as np
np.savetxt('test.csv',
np.column_stack((np.array([0,1]),
np.array([50, 49.995]),
np.array([0, 0.5726]),
np.array([-32.8125, -32.8043])),
delimiter=',', header='xval,# yval1,# yval2,# yval3')
请记住,Numpy 本身已经在标题行的开头添加了一个井号。感兴趣的 LaTeX 脚本 (MWE) 如下所示:
\documentclass{standalone}
\usepackage{filecontents}
\usepackage{pgfplots}
\begin{filecontents}{test.csv}
# xval,# yval1,# yval2,# yval3
0.0000,50.0000,0.0000,-32.8125
1.0000,49.9950,0.5726,-32.8043
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot
table[x=1, y=2, col sep=comma, comment chars=#] {test.csv};
table[x={# xval}, y={# yval2}, col sep=comma] {test.csv};
\end{axis}
\end{tikzpicture}
\end{document}
这两个例子似乎都不起作用,可能是因为这个井号是 LaTeX 中的保留符号之一。转义或加倍井号也无济于事。任何帮助都值得赞赏。
答案1
有了comment chars=\#
它就可以了。当然,这意味着第一行被跳过(它被注释掉了),所以你有一个没有标题行的表。在这种情况下,我想你可能不得不使用x index
/y index
而不是显式的列名,例如
\documentclass{standalone}
\usepackage{filecontents}
\usepackage{pgfplots}
\begin{filecontents}{test.csv}
# xval,# yval1,# yval2,# yval3
0.0000,50.0000,0.0000,-32.8125
1.0000,49.9950,0.5726,-32.8043
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot table[x index=0, y index=2, col sep=comma, comment chars=\#] {test.csv};
\end{axis}
\end{tikzpicture}
\end{document}