自动标记(固定)图中的点

自动标记(固定)图中的点

我有一个散点图,它是根据以逗号分隔格式存储的一些数据生成的。我需要为每个点添加一个标签:此信息可作为文件的一部分使用,.csv因为它用作行标签。目前,我的方法是自动绘制点,但手动添加标签:

\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.csv}
Label,x,y,angle
a,1,1,0
b,2,2.5,0
c,3,2.9,0
d,4,4.1,-90
\end{filecontents*}
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
  \begin{axis}
    \addplot table
      [col sep = comma, x = x, y = y] {\jobname.csv};
    \node[pin = a] at (axis cs:1,1) {};
    \node[pin = b] at (axis cs:2,2.5) {};
    \node[pin = c] at (axis cs:3,2.9) {};
    \node[pin = -90:d] at (axis cs:4,4.1) {};
  \end{axis}
\end{tikzpicture}
\end{document}

显然这不是很有效:理想情况下,我想从存储表中读取信息。这需要某种形式的映射,但从文档来看,pgfplots(table)似乎缺少一个逐行函数来执行此操作。

是否可以编写一个(相对简单的)映射来添加节点,拾取X值加上文件中的标签和角度(或者可能是更宽的“引脚修改”).csv?我的桌子不太长:最多大约十几行。

答案1

point meta = explicit symbolic您可以使用选项中的\addplot和选项meta = Label中的标签table。可以使用提供角度visualization depends on = \thisrow{Angle} \as \angle。然后,您可以使用创建图钉nodes near coords

\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.csv}
Label,x,y,angle
a,1,1,90
b,2,2.5,90
c,3,2.9,90
d,4,4.1,-90
\end{filecontents*}
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[visualization depends on = \thisrow{angle} \as \angle]
    \addplot +[
            nodes near coords=,
            point meta = explicit symbolic,
            every node near coord/.style = {
                anchor = center, pin = {\angle:\pgfplotspointmeta}
            }
        ] table
      [col sep = comma, x = x, y = y, meta = Label
      ] {\jobname.csv};
  \end{axis}
\end{tikzpicture}
\end{document}

相关内容