节点上方的标签

节点上方的标签

考虑下面的简单图表,

\begin{tikzpicture}[node distance=2.5cm,main node/.style={circle,fill=white!20,draw}, scale=0.6, every node/.style={scale=0.6}]   

\node[main node] [label={[label distance=1cm]30:label}] (A) {$v_1$};
\node[main node] (B) [right of=A] {$v_2$}; 
\node[main node] (C) [right of=B] {$v_3$};
\node[main node] (D) [right of=C] {$v_4$};

\draw 
(A) -- (C)
(B) -- (C)
(B) -- (D);

\end{tikzpicture}

是否可以删除穿过节点的线(使节点内部为空)并将标签放在节点上方?

答案1

您正在从A到画一条线C,因此它将越过B。如果您从 到 到 画A一条B线C,则D可以避免这种情况。

如果您所说的“标签”是指您已经添加的标签,则只需更改3090(或30:完全删除,上面是默认设置)。如果您指的是v_i,那么也添加带有标签的标签。在最后一种情况下,您可能需要更改minimum size节点的。

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[node distance=2.5cm,main node/.style={circle,fill=white!20,draw}, scale=0.6, every node/.style={scale=0.6}]   

\node[main node] [label={[label distance=1cm]90:label}] (A) {$v_1$};
\node[main node] (B) [right of=A] {$v_2$}; 
\node[main node] (C) [right of=B] {$v_3$};
\node[main node] (D) [right of=C] {$v_4$};

\draw (A) -- (B) -- (C) -- (D);

\end{tikzpicture}
\begin{tikzpicture}[node distance=2.5cm,main node/.style={minimum size = .7cm,circle,fill=white!20,draw}, scale=0.6, every node/.style={scale=0.6}]   

\node[main node] [label={[label distance=1cm]90:label},label=$v_1$] (A) {};
\node[main node] (B) [right of=A,label=$v_2$] {}; 
\node[main node] (C) [right of=B,label=$v_3$] {};
\node[main node] (D) [right of=C,label=$v_4$] {};

\draw (A) -- (B) -- (C) -- (D);

\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

如果您想尽可能少地更改代码,可以使用该backgrounds库。

添加\usetikzlibrary{backgrounds}到您的序言中,并像这样更改代码(其他所有内容都相同):

\begin{scope}[on background layer]
\draw 
(A) -- (D);
\end{scope}

在此处输入图片描述

我改变了路径(感谢 Torbjørn),因为当你重复路径时中心线变得更粗/更奇怪。

或者,您可以使用edge曲线:

用以下方式替换您的抽签:

\draw 
(A) edge[out=310,in=230,-] (C)
(B) -- (C) % you could use edge[out=0,in=180,-] but it's a straight line so that will do.
(B) edge[out=60,in=135,-] (D);

而且它得到了

在此处输入图片描述

相关内容