我想使用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 圆圈,您随后可以使用它们。请注意,如果您确实为节点使用了一些文本,则绘制的节点的大小将发生变化(但当然,您可能不必绘制任何东西,在这种情况下应该没有问题)。