\documentclass{minimal}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[circle,draw=black] (t) at (0,0) {};
\foreach \i in {0,1,...,359}{
\node[label={\i:$\circ$}] at (t) {};
}
\end{tikzpicture}
\end{document}
这让我:
我预计标签的位置会围绕节点呈圆形。但是,在节点的北、南、东、西以及某个方形路径上都有标签。有人能给我解释一下吗?
我还希望能够围绕节点设置一条圆形路径,以便定位标签。使用标签选项可以实现这一点吗?
这是我的具体问题:
\documentclass[border=5pt,tikz]{standalone}
\begin{document}
\begin{tikzpicture}[state/.style={inner sep=0mm,circle,draw=black,minimum width=2mm}]
\node[state,label={2:Test}] (A) at (0,0) {\tiny A};
\node[state] (B) at (5,-1) {\tiny B};
\node[state] (C) at (4,4) {\tiny C};
\foreach \from/\to in {A/B,B/C,C/A}{
\path (\from) edge (\to);
}
\end{tikzpicture}
\end{document}
使用标签角度会在从 2 切换到 3 时产生“跳跃”,以致于它不适合中间。
当然,您可以手动定位这样的标签,使其适合中间(我知道这一点)。但如果您必须对一堆标签执行此操作,这会非常麻烦。我认为这应该以某种方式直接在标签中工作,以便更容易放置。
然后我尝试添加一个额外的标签节点:
\documentclass[border=5pt,tikz]{standalone}
\begin{document}
\begin{tikzpicture}[state/.style={inner sep=0mm,circle,draw=black,minimum width=2mm}]
\node[state] (A) at (0,0) {\tiny A};
\node[state] (B) at (5,-1) {\tiny B};
\node[state] (C) at (4,4) {\tiny C};
\node[anchor=west] at ([shift=(20:3mm)]A) {Test};
\foreach \from/\to in {A/B,B/C,C/A}{
\path (\from) edge (\to);
}
\end{tikzpicture}
\end{document}
但是你必须根据角度修改此节点的锚点。例如,如果你坚持使用锚点并使用 180 度角,那么你无需将锚点改为东,即可获得以下结果:
因此,将标签“平滑”地定位在物体周围的圆圈上会非常好。
答案1
这部分是由于标签的自动锚定,部分是由于其形状。
第一个问题可以通过添加anchor=\i+180
标签选项来解决,第二个问题可以通过添加来解决circle
。
下面是我添加的一些帮助行的示例:
左边的情况是默认情况(也必须添加circle
到节点中\foreach
)。中间的情况是anchor
明确给出键的情况。您可以清楚地看到,矩形形状是标签不在圆圈上的原因。第三种情况是标签的形状也设置为circle
。与红色圆圈的小偏差是大概(但如果我错了请纠正我)由于$
$
用于的间距\circ
。
完整代码如下:
\documentclass[tikz,margin=2mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[circle,draw=black] (t1) at (0,0) {};
\foreach \i in {0,30,...,359}{
\node[label={[draw,draw opacity=0.25]\i:$\circ$}] at (t1) {};
}
\node[circle,draw=black] (t2) at (2,0) {};
\foreach \i in {0,30,...,359}{
\node[circle,label={[anchor=\i+180,draw,draw opacity=0.25]\i:$\circ$}] at (t2) {};
}
\node[circle,draw=black] (t3) at (4,0) {};
\foreach \i in {0,30,...,359}{
\node[circle,label={[anchor=\i+180,circle,draw,draw opacity=0.25]\i:$\circ$}] at (t3) {};
}
\draw[red] (t1) circle (0.475);
\draw[red] (t2) circle (0.475);
\draw[red] (t3) circle (0.475);
\end{tikzpicture}
\end{document}