使用 tikz-graph 在边缘上添加标签

使用 tikz-graph 在边缘上添加标签

我想在 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,我通过反复试验发现了它。

相关内容