我需要制作一个图表,其中节点标签位于节点本身之外,因此图中的边应该从一个节点标签延伸到另一个节点标签。我目前拥有的一个简单片段是
\begin{figure}[H]
\begin{tikzpicture}
\node[circle, draw=black, label=below:F] (F) at (0, 1) {};
\node[circle, draw=black, label=below:T] (T) at (-1, 0) {};
\node[circle, draw=black, fill=red, label=below:R] (R) at (1, 0) {};
\node[circle, draw=black, fill=red, label=above:Tt, below=of T] (Tt) {};
\draw[-] (F) -- (T);
\draw[-] (R) -- (T);
\draw[-] (R) -- (F);
\draw[-] (T) -- (Tt);
\end{tikzpicture}
\end{figure}
其结果如下
是否有任何方法可以绘制边,使得边始于 T 并终止于 Tt?
答案1
由于 alabel
只是另一个节点,因此您可以使用name
键来命名它:
label={[name=<name>]<direction>:<text>}
但是,我们可以通过使用自动命名来\tikzlastnode
节省一些输入。这样每个标签都有名称l-<name of parent node>
(当然,如果您想使用多个标签,则需要进行调整)。
代码
\documentclass[tikz]{standalone}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[
node distance=1.5cm,
n/.style={
circle, draw=black,
label={[name/.expanded=l-\tikzlastnode]#1}
}
]
\node[n=below:F] (F) at (0, 1) {};
\node[n=below:T] (T) at (-1, 0) {};
\node[n=below:R, fill=red] (R) at ( 1, 0) {};
\node[n=above:Tt, fill=red, below=of T] (Tt) {};
\draw (l-F) -- (l-T);
\draw (l-R) -- (l-T);
\draw (l-R) -- (l-F);
\draw (l-T) -- (l-Tt);
\end{tikzpicture}
\end{document}