pgfplot:绘制 CSV 文件中的非数字数据

pgfplot:绘制 CSV 文件中的非数字数据

我有一个 csv 文件,例如:

column1,column2
string1,value1
string2,value2

值是整数,字符串是字母数字。

我尝试绘制它,x 轴上是字符串,y 轴上是值。经过几次尝试,出现了如下错误Could not parse input "string1" as a floating point number, sorry. The unreadable part was near…,根据一些问题(例如这里这里这里这里或者这里),我终于找到了让事情正常运作的唯一方法,(另见文档,第 363 页):

\begin{tikzpicture}
\begin{axis}[
    symbolic x coords={string1,string2,string3,…},
    minor tick num=1,
]
\addplot table [x=column1,y=column2] {csvfile.csv}
\end{axis}
\end{tikzpicture}

显然,非数值数据需要直接写在图形定义中。

我怎样才能以 DRY 方式获得相同的结果,即仅将数据源作为\addplot参数给出的 CSV 文件?

答案1

感谢 torbjørn-t 的评论,我终于找到了这个答案xticklabels from table={<table or file name>}{<column name>}选项。

以下是最终的工作代码:

\pgfplotstableread[col sep=comma]{path/to/csv}\datatable
\begin{tikzpicture}
    \begin{axis}[
        ybar,
        xtick=data,
        xticklabels from table={\datatable}{column1},
    ]
    \addplot table [col sep=comma, x expr=\coordindex, y=column2] {path/to/csv};
    \end{axis}
\end{tikzpicture}

相关内容