这是我绘画的一个简单示例:
\RequirePackage{luatex85}
\documentclass[]{article}
\usepackage{tikz}
\usetikzlibrary{graphs,graphdrawing}
\usegdlibrary{layered}
\begin{document}
\begin{tikzpicture} []
\graph [nodes=draw,
grow down]
{
//[layered layout,name=cat1,nodes={fill=red!50}]{
Cat1[rectangle] -> {110
, 492};
492 -> 371;
};
//[layered layout,name=cat2,nodes={fill=green!50}]{
Cat2[x=+4cm,rectangle] -> 140;
140 -> 150;
150 -> {305, 325};
};
//[layered layout,name=cat3,nodes={fill=yellow!50}]{
Cat3[x=-5cm,rectangle] -> {101
, 156 -> {365, 326}};
};
(cat3 365) -> (cat2 150);
};
\end{tikzpicture}
\end{document}
我想在其他节点(如 Cat1 371)后面渲染 (Cat3 365) 和 (Cat2 150) 之间的线。我尝试使用该backgrounds
库,但无法使其工作。有什么想法吗?
答案1
尽管edges behind nodes
是默认的绘图顺序,它似乎仅当所有边都是图形绘图布局的一部分时才有效。
然而,你的优势不属于layered layout
在线布局策略Cartesian placement
由于grow down
。
因为你根本不用它,所以我用no placement
。
graph
虽然可能有一种方法可以为三个子布局指定布局,以便考虑该边缘,但在您的用例中,结束一个操作并在之后启动另一个操作要容易得多behind path
(尽管手册没有提到它也适用于边而不仅仅是节点),这意味着所有后续边将放置在该路径上的所有内容和前景(即整个图表)的后面。
这也会将这个新边置于所有其他边的后面,但在这个简单的图表中不会很明显。
代码
% !TeX TS-program = lualatex
\RequirePackage{luatex85}
\documentclass[tikz]{standalone}
\usetikzlibrary{graphs, graphdrawing}
\usegdlibrary{layered}
\begin{document}
\tikz
\graph [nodes=draw, no placement] {
//[layered layout, name=cat1, nodes={fill=red!50}]{
Cat1[rectangle] -> {110, 492 -> 371};
};
//[layered layout, name=cat2, nodes={fill=green!50}]{
Cat2[x=+4cm,rectangle] -> 140 -> 150 -> {305, 325};
};
//[layered layout, name=cat3, nodes={fill=yellow!50}]{
Cat3[x=-5cm,rectangle] -> {101, 156 -> {365, 326}};
};
} [behind path] graph{(cat3 365) -> (cat2 150)};
\end{document}