TikZ 更精确地设置节点标签位置

TikZ 更精确地设置节点标签位置

这看起来应该很容易,但我似乎在任何地方都找不到它......

我希望能够微调节点标签的定位。

我知道语法\node[label=above/below/etc:{label}] (x) {};,但这似乎没有给你提供很多标签放置位置的选项。我希望能够将标签放置得更近或更远,或者放置在除 8 个可用预设之外的其他方向上。

\tikz[label distance=x]不是一个好的解决方案,因为我需要它是特定于节点的。

答案1

您可以使用 定义标签的方向label=<angle>:<label text>。要指定每个节点距离,您必须将其提供给选项labellabel={[label distance=<distance>]<angle>:<label text>}

\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[
    every node/.style=draw,
    every label/.style=draw
]
\node [label={[label distance=1cm]30:label}] {Node};
\end{tikzpicture}
\end{document}

答案2

很高兴知道执行此操作的所有其他方法,但我一直使用xshift=<length>yshift=<length>来移动nodelabel

蓝色是默认的,红色带有选项[xshift=1.0cm, yshift=0.3cm],而绿色(按照percusse的建议)使用备用语法将x和y移位指定为向量[shift={(1.0,0.3)}]

在此处输入图片描述

代码:

\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[blue]
    \node [label={Label}] {Node};
\end{tikzpicture}
\begin{tikzpicture}[red]
    \node [label={[xshift=1.0cm, yshift=0.3cm]Label}] {Node};
\end{tikzpicture}
\begin{tikzpicture}[green]
    \node [label={[shift={(1.0,0.3)}]Label}] {Node};
\end{tikzpicture}
\end{document}

答案3

最简单的方法是使用另一个节点。就像您写的一样,标签是节点“标签”。实际\path ... node[⟨options⟩](⟨name⟩)at(⟨coordinate⟩){⟨text⟩} ...;标签是⟨text⟩。现在可以轻松添加节点和新标签,而无需选项label

  \documentclass{scrartcl}
  \usepackage{tikz}
  \begin{document} 

   \begin{tikzpicture}
     \node [draw,circle ] (a) { Real label}; 
     \node  at (a.60) {$\bullet$}; 
     \node [draw] at ([shift={(95:1)}]a.60) {Second label};

   \end{tikzpicture}

   \end{document}    

在此处输入图片描述

唯一的问题是你需要指定第一个节点的名称,但你可以做你想做的事。在 TikZ 的第一个版本中,没有这个label选项,这是唯一的方法。

答案4

这种模式也非常有用:

\node at ($(R) + (0.03,0.4)$)    {Your label!};

这样,您就可以相对于的坐标定位标签R

请注意,您需要\usetikzlibrary{calc}这种方式。

类似的解决方案不需要calc(感谢保罗·加博利!) 是

\path (R) ++(0.03,0.4) node {Your label!};

相关内容