我想将 CSV 文件中的数据读入图表。不幸的是,数据本身包含逗号:
Name, Description, Data
hello, "hello, world", 1
请注意,数据使用引号引用,这在 CSV 文件中很常见。我使用以下内容读取文件:
\pgfplotstableread[col sep=comma]{data.csv}{\datatable}
问题是:该pgfplotstable
包似乎无法处理引号,具体来说,我收到一条错误消息,因为第二行中的条目显然太多了。我按以下方式编辑了该文件:
Name, Description, Data
hello, hello\, world, 1
这似乎可以正常工作。然后我尝试Description
在图中使用该列作为符号坐标:
\begin{axis}[yticklabels from table={\datatable}{Description}]
# ....
\end{axis}
本例中的问题:逗号消失,标签只显示“hello world”。
有没有办法读取引用的条目(我一直使用pgfplotstable
),或者以某种方式引用文件,以便我可以将列读入标签?
答案1
根据评论:由于我能够直接修改 CSV,因此转义逗号的可接受方法是第五个选项,即用花括号括住单元格:
\documentclass{minimal}
\usepackage{pgfplots}
\usepackage{filecontents}
\begin{filecontents*}{data.csv}
Name,Description,Data
hello,hello,1
second,second \, option,2
third,third \, option,3
fourth,"{fourth, option}",4
fifth,{fifth, option},5
\end{filecontents*}
\pgfplotstableread[col sep=comma]{data.csv}\datatable
\begin{document}
\begin{tikzpicture}
\begin{axis}[ymin=-5,ymax=5,yticklabels from table={\datatable}{Description}]
\end{axis}
\end{tikzpicture}
\end{document}
请注意:我使用\,
不是为了产生额外的空格,而是为了转义逗号。毕竟,表格中的一行first, "first, option", 1
会导致 latex 失败并显示错误消息
! Package pgfplots Error: Table 'data.csv' appears to have too many columns
因此,使用 CSV 文件的解析选项pgfplotstable
似乎相当有限......