我有一个定义如下的图。实际图有数百个节点,这只是一个例子。如何在节点顶部添加标签(旋转 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}