![库图 - 分层布局和树的混合 - 如何做?](https://linux22.com/image/478418/%E5%BA%93%E5%9B%BE%20-%20%E5%88%86%E5%B1%82%E5%B8%83%E5%B1%80%E5%92%8C%E6%A0%91%E7%9A%84%E6%B7%B7%E5%90%88%20-%20%E5%A6%82%E4%BD%95%E5%81%9A%EF%BC%9F.png)
对我来说,创建具有某些特定属性的图表是不可能的。也许你有一些关于如何实现的有用想法?!
1. 和 2. 中的图表的属性必须是“混合”的,而在 3. 中,父级和传出链(子级)之间的链接连接样式是一个不错的选择。
1. 为了节省空间,最好采用“分层布局”,但不采用迷宫链结构,见下图(B)。例如,代替结构
1-3 -> 5-1 (same line)
-> 1-4 (new line)
它必须看起来像
1-3 -> 1-4 (same line)
-> 5-1 (new line)
2. 从父链可以分支出多条子链。父链中的所有链节必须在同一条线上,如上图(A)所示。
3. 每个传出链(具有属性 [>红色、向右弯曲、非常粗] 的子链)的初始链接必须是矩形而不是直线。
感谢您的帮助!
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{graphs}
\usetikzlibrary{graphdrawing}
\usegdlibrary{layered}
\begin{document}
\tikz [
rotate=90,
]
\graph [
]{
"1-1" -> {
"1-2" -> "1-3" ->{
"1-4" ->"1-5"->{
"1-6",
"2-1"[>red, bend right, very thick]
->"2-2"->{
"2-3",
"4-1"[>red, bend right, very thick]
},
},
"5-1"[>red, bend right, very thick]
->"5-2"->"5-3"->"5-4"
},
"3-1"[>red, bend right, very thick]
->"3-2"->"3-3"->"3-4"->"3-5"->"3-6"->"3-7"->"3-8"->"3-9"->"3-10"->"3-11"->"3-12"
}
};
\hspace{2cm}
\tikz [
layered layout,
rotate=90
]
\graph [
]{
"1-1" -> {
"1-2" -> "1-3" ->{
"1-4" ->"1-5"->{
"1-6",
"2-1"[>red, bend right, very thick]
->"2-2"->{
"2-3",
"4-1"[>red, bend right, very thick]
},
},
"5-1"[>red, bend right, very thick]
->"5-2"->"5-3"->"5-4"
},
"3-1"[>red, bend right, very thick]
->"3-2"->"3-3"->"3-4"->"3-5"->"3-6"->"3-7"->"3-8"->"3-9"->"3-10"->"3-11"->"3-12"
}
};
\end{document}
答案1
使用点使用程序的语言Graphviz以及dot2tex包(包括点点图 (LaTeX 中的图形) 有助于获得所需的结果。点图的好处是可以更简单地绘制图形,请参阅代码和图形示例。
另一方面,方形边缘并不总是按应有的方式绘制,参见Graphviz 节点之间的边绘制错误。
对于大家如何需要方边来连接单个音符可以看看这个威胁:DOT 能否生成更加结构化的图表?。
使用以下方法可能会出现的问题dot2tex在 PDF 编译过程中(通常是--shell 转义标志问题)。如果您使用 TexStudio,请查看最后一个链接来寻找解决方案。
以下是示例代码和对应的图:
\documentclass{standalone}
\usepackage[debug]{dot2texi}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows}
\begin{document}
\begin{dot2tex}[]
digraph {
rankdir=LR;
pencolor=transparent;
graph [splines=ortho];
subgraph cluster1{
1->2->3->4->5;
}
subgraph cluster2 {
6->7->8->9->10.1;
}
subgraph cluster3 {
11->12->13->14->15;
}
subgraph cluster4 {
16->17->18->19->20;
}
subgraph cluster5 {
21->22->23->24->25
}
1->11;
3->21;
5->6;
1 [label="1-1"];
7->16;
}
\end{dot2tex}
\end{document}