分布在一个宽的曲线图不同的线的相同等级的节点分布在一个宽的曲线图不同的线的相同等级的节点(Distr

2019-06-02 15:52发布

我有一个图(组织机构图)如何:

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线?

Answer 1:

这里有两种可能性(见这个问题 ):

1.使用unflatten工具

的Graphviz提供了一个名为工具unflatten 。 如果预处理使用此命令行的图:

unflatten -l 3 wide.gv | dot -Tpng -o wide.png

输出图像将类似于下面的图片。 这略少宽,你可以与玩-l选项。

2.使用`秩=相同”和不可见边

您可以使用标准技术,使像你希望它自动一出奠定图表看更多:

  • 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;
}



文章来源: Distribute nodes on the same rank of a wide graph to different lines