TikZ:在节点标签之间绘制边

TikZ:在节点标签之间绘制边

我需要制作一个图表,其中节点标签位于节点本身之外,因此图中的边应该从一个节点标签延伸到另一个节点标签。我目前拥有的一个简单片段是

\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}

输出

上述代码的输出

相关内容