我有一个图表(organigram)如何:
digraph G {
nodesep=0.3;
ranksep=0.2;
margin=0.1;
node [shape=rectangle];
edge [arrowsize=0.8];
1 -> 2;
1 -> 3;
1 -> 4;
1 -> 5;
1 -> 6;
1 -> 7;
1 -> 8;
1 -> 9;
1 -> 10;
}
我有70人的组织结构,不可能用A4打印。如何将节点放在2行或3行?
答案 0 :(得分:15)
以下是两种可能性(另请参阅this question):
unflatten
实用程序 Graphviz提供了一个名为unflatten
的工具。如果使用以下命令行预处理图形:
unflatten -l 3 wide.gv | dot -Tpng -o wide.png
输出图像类似于下图。这稍微宽一些,您可以使用-l
选项。
您可以使用标准技术使自动布局的图形看起来更像您想要的:
rank=same
将子图中的节点分组,并定义哪些节点应位于同一行constraint=false
影响布局group
节点的属性以鼓励直边。 输出图表不一定更漂亮......
这是一个例子,你可以做得更好。此外,如果动态生成图形,这可能不太实用。
digraph G {
nodesep=0.3;
ranksep=0.2;
margin=0.1;
node [shape=rectangle];
edge [arrowsize=0.8];
edge[style=invis];
node[group=a];
2->5->8;
node[group=b];
1->3->6->9;
node[group=c];
4->7->10;
edge[style=solid];
1 -> 2;
1 -> 3;
1 -> 4;
edge[constraint=false];
1 -> 5;
1 -> 6;
1 -> 7;
1 -> 8;
1 -> 9;
1 -> 10;
}