为 tikz 节点添加标签

为 tikz 节点添加标签

我有一个定义如下的图。实际图有数百个节点,这只是一个例子。如何在节点顶部添加标签(旋转 x 度)?

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{backgrounds}
\usetikzlibrary{positioning}
\usetikzlibrary{graphs}
\usetikzlibrary{shapes.arrows}

\begin{document}
\begin{frame}
\frametitle{Title}
\framesubtitle{Subtitle}

\tikz [>=stealth, black!50, text=black, very thin,
    every new ->/.style = {shorten >=1pt},
    graphs/every graph/.style = {edges=rounded corners},
    hv path/.style = {to path={-| (\tikztotarget)}},
    vh path/.style = {to path={|- (\tikztotarget)}},
    t/.style = {
      circle, minimum size=1mm, thin, draw=black!80, scale=0.1, fill=black!80},
    shape = coordinate
    ]
    \graph [grow left sep=1.5mm, branch down=1.0mm, simple] {
        
t0/""[t]
 -- {
  t1/""[t]
   -- {
     t17/""[t],
     t18/""[t]
   }
 };
 };
\end{frame}
\end{document}

在此处输入图片描述

答案1

你可以使用 TikZ 自己的label钥匙向组成图的节点中添加其他节点。

你可以将这些添加到每个节点的选项中,比如

t0/""[t, label={[rotate=90, anchor=west]north:Hello World}]

如果所有标签看起来都一样,则将every label键设置为所需的设置是有意义的。

您必须在图表节点之间留出足够的空间,因为graphs库不会考虑标签。如果这里需要采用自动化方法,我们需要投入更多工作。


如果标签内容对应于节点的名称(t0,,t1...)或节点的文本,则可以使用\tikzgraphnodename和/或\tikzgraphnodetext作为标签文本的一部分。


由于shape = coordinate设置了所有节点的形状,除非另有说明,否则您必须将其删除或明确设置rectangle标签shape = rectangle。我选择了前者,因为我看不出将所有节点设置为坐标有什么好处。

代码

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{graphs}
\begin{document}
\begin{frame}
\frametitle{Title}
\framesubtitle{Subtitle}
\tikz[
  black!50, text=black, very thin,
  every new ->/.style = {shorten >=1pt},
  graphs/every graph/.style = {edges=rounded corners},
  hv path/.style = {to path={-| (\tikztotarget)}},
  vh path/.style = {to path={|- (\tikztotarget)}},
  every label/.style={
    rotate=90, label position=north, anchor=west, 
    node font=\footnotesize, inner sep=+.15em,
  },
  t/.style = {
    circle, minimum size=1mm, inner sep=+0pt,
    thin, draw=black!80, fill=black!80},
%  shape = coordinate % don't do this or add rectangle to every label
]\graph[
  grow left sep=1em, branch down sep=1.3em, simple,
  empty nodes, nodes={t, label={\tikzgraphnodetext}},
] {
  0 -- {
    1 -- {
      17,
      18/Hi
    }
  }
};
\end{frame}
\end{document}

输出

在此处输入图片描述

相关内容