我有一个逗号分隔的数据点列表。它们应该绘制为散点图,并使用 .csv 文件中的数据进行标记。将文件的第一列指定为 后string type
,我仍然不断遇到错误,提示Could not parse input [...] as a floating point number, sorry.
给定以下格式的 CSV 文件,我如何读取Name
并Z
作为标签?
Name,X,Y,Z
ODIN,250,45,2001
这是我的 MWE:
\documentclass{article}
\usepackage{tikz,pgfplots,pgfplotstable}
\pgfplotsset{compat=1.5.1}
\begin{document}
\pgfplotstabletypeset[columns/Name/.style={string type}]{table.csv};
\begin{tikzpicture}
\begin{axis}[
visualization depends on=\thisrow{Name} \as \labela,
visualization depends on=\thisrow{Z} \as \labelb,
every node near coord/.append style={font={\tiny}},
nodes near coords=\labela/\labelb,
nodes near coords align={horizontal},]
\addplot[only marks] table [x=X,y=Y,col sep=comma] {table.csv};
\end{axis}
\end{tikzpicture}
\end{document}
请注意,如果列中的数据Name
只是浮点数,它应该可以正常工作。
答案1
value
如果不想让内容被解析为数字,则需要添加前缀。
\documentclass{article}
\usepackage{pgfplots,pgfplotstable,filecontents}
\begin{filecontents*}{table.csv}
Name,X,Y,Z
ODIN,250,45,2001
NIDO,280,70,2002
DINO,270,60,2003
\end{filecontents*}
\begin{document}
\pgfkeys{/pgf/number format/set thousands separator={}}
\pgfplotstabletypeset[columns/Name/.style={string type},col sep=comma]{table.csv}
\begin{tikzpicture}
\begin{axis}[
visualization depends on={value \thisrow{Name} \as \labela}, % note the value prefix
visualization depends on={\thisrow{Z} \as \labelb},
every node near coord/.append style={font={\tiny}},
nodes near coords={\labela/\pgfmathprintnumber\labelb},
nodes near coords align={horizontal}
]
\addplot[scatter,only marks] table [x=X,y=Y,col sep=comma] {table.csv};
\end{axis}
\end{tikzpicture}
\end{document}