命名`nodes near coords`的节点以供稍后使用

命名`nodes near coords`的节点以供稍后使用

我想使用pgfplots命令来获取命名节点( 、等)nodes near coords的列表,然后可以使用它来绘制一些我无法构建的路径 。(no1)(no2)(no3)pgfplots

我认为它需要使用scatter/@post marker code,但我不太理解手册的那部分(第 82 页)。实际上,如果nodes near coords是的重新定义,scatter/@pre marker code那么我认为我并不真正需要nodes near coords并且可以使用改变的散点图。然而,我没有在手册中找到代码定义nodes near cords,并迷失在巨大的代码文件中pgfplots

以下是取自pgfplots手册的可以构成最小示例的一个示例:

\begin{tikzpicture}
\begin{axis}[nodes near coords]
\addplot+[only marks] coordinates {
(0.5,0.2) (0.2,0.1) (0.7,0.6)
(0.35,0.4) (0.65,0.1)};
\end{axis}
\end{tikzpicture}

不幸的是,我不知道这是否真的是答案的一部分。

答案1

这个没有内置功能,但是你可以利用保存\coordindex当前坐标索引的宏相对轻松地自己添加它:

\pgfplotsset{
    name nodes near coords/.style={
        every node near coord/.append style={
            name=#1-\coordindex,
            alias=#1-last,
        },
    },
    name nodes near coords/.default=coordnode
}

如果您随后添加name nodes near coords选项\addplot,节点将命名为从<node name>-1<node name>-<max><node name>使用可选参数指定或默认为coordnode。每个图的最后一个节点将被命名为<node name>-last

以下是如何使用它的一个例子:

\documentclass{article}

\usepackage{pgfplots}
\usepackage{pgfplotstable}

\pgfplotsset{
    name nodes near coords/.style={
        every node near coord/.append style={
            name=#1-\coordindex,
            alias=#1-last,
        },
    },
    name nodes near coords/.default=coordnode
}

\begin{document}

\begin{tikzpicture}

\begin{axis}[
    nodes near coords,
    ]
\addplot+[only marks,   name nodes near coords=myname] coordinates {
(0.5,0.2) (0.2,0.1) (0.7,0.6)
(0.35,0.4) (0.65,0.1)};
\addplot+[only marks,   name nodes near coords=secondname] coordinates {
(0.3,0.3) (0.2,0.2) (0.4,0.6)
(0.7,0.4) (0.6,0.1)};
\end{axis}
\draw (myname-0) -- (myname-last);
\draw (secondname-3) to [out=180, in=0] (secondname-2);
\end{tikzpicture}

\end{document}

答案2

只是很快,现在没有时间进行完整的 MWE;但也可以使用mark=text情节风格text mark as node=true

\addplot+[
  only marks,
  mark=text, 
  text mark={}, % empty for now; try also \coordindex
  text mark as node=true,
  text mark style={%
    name=MYNODE\coordindex,
    color=orange,
    shape=circle,
    draw,
    inner sep=0pt,
    minimum size=0pt,
    align=center,
    text width=5pt,
    text depth=0pt
  },
]
  table[
    x index=1, %x expr=\coordindex,
    y expr=0.0,
  ] \mytable ;
\end{axis}

\draw[thick,green] (0,0) -- (MYNODE1.center);

这将为您提供名为 MYNODE0、MYNODE1 等的 5pt 圆圈,您随后可以使用它们。请注意,如果您确实为节点使用了一些文本,则绘制的节点的大小将发生变化(但当然,您可能不必绘制任何东西,在这种情况下应该没有问题)。

相关内容