我想在 tikz-graph 中的一些边上添加标签。
我尝试了下面的代码,但是它将标签添加到父节点 - 我希望这个标签位于边缘上。
\documentclass{article}
\usepackage{pgf}
\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{arrows,shapes,snakes,automata,backgrounds,petri}
\usetikzlibrary{positioning}
\usetikzlibrary{graphs}
\usetikzlibrary{graphdrawing}
\usetikzlibrary{calc,shadings}
\usetikzlibrary{graphs}
\usegdlibrary{layered}
\begin{document}
\begin{figure}
\begin{center}
\tikz [baseline=(current bounding box.center)] \graph [layered layout, grow'=right, level sep=1cm, sibling distance=.5cm] {
toto [label=mylabel] -> {
a,b
}
};
\end{center}
\end{figure}
\end{document}
有人知道我怎样才能得到箭头上的标签吗?
我也尝试过这个,但没有编译(在 lualatex 中):
\documentclass{article}
\usepackage{pgf}
\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{arrows,shapes,snakes,automata,backgrounds,petri}
\usetikzlibrary{positioning}
\usetikzlibrary{graphs}
\usetikzlibrary{graphdrawing}
\usetikzlibrary{calc,shadings}
\usetikzlibrary{graphs}
\usegdlibrary{layered}
\begin{document}
\begin{figure}
\begin{center}
\tikz [baseline=(current bounding box.center)] \graph [layered layout, grow'=right, level sep=1cm, sibling distance=.5cm] {
toto -> {
a,b
};
\draw (toto) edge node{label} (a);
};
\end{center}
\end{figure}
\end{document}
提前感谢您的回答!
答案1
首先,似乎你需要一个相当前沿的 Tikz 才能完成这项工作。但我在 tikz-pgf 3.0.0 手册的第 19.2.3 节中找到了解决方案:
添加 \usetikzlibrary{quotes}
序言,然后:
\tikz [baseline=(current bounding box.center)] \graph [layered layout, grow'=right, level sep=1cm, sibling distance=.5cm] {
toto -> [red] { % apply to all the edges
a [> "lab1"], b [> {blue, sloped, pos=0.9, "lab2"'} ] % apply only to the edge to this node with the ">"
}
};
将产生:
...不要问的奇怪值pos
,我通过反复试验发现了它。