如何使用带有 pgfplotstable 的字符串列来标记 pgfplot 中的数据点?

如何使用带有 pgfplotstable 的字符串列来标记 pgfplot 中的数据点?

我有一个逗号分隔的数据点列表。它们应该绘制为散点图,并使用 .csv 文件中的数据进行标记。将文件的第一列指定为 后string type,我仍然不断遇到错误,提示Could not parse input [...] as a floating point number, sorry.

给定以下格式的 CSV 文件,我如何读取NameZ作为标签?

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}

在此处输入图片描述

相关内容