Pgfplots:在导入的表中使用井号符号作为注释符号

Pgfplots:在导入的表中使用井号符号作为注释符号

我遇到了非常类似的问题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}

相关内容