预脚本
...就在我完成这些示例时,我看到了“往返”流程主题 https://stackoverflow.com/questions/18877045/graphviz-how-to-create-a-roundtrip-flow,看起来不错。
既然我已经把这个放在这里了,不妨问一下:还有其他选择吗?
原帖
有没有办法在子图中自动将节点布置在矩形布局中?
举个例子,假设我有给定的结构:
digraph
{
rankdir="LR";
node [ shape="circle", style="bold, filled", fillcolor="#dddddd" ];
a -> b -> c -> d -> e -> f -> g -> h -> b;
}
This yields the diagram
我的目标是让它们排成一个矩形,每行三个节点,形成
如果我尝试限制排名并更改rankdir
,它不像预期的那样(我假设因为你无法改变rankdir
像这样):
digraph
{
rankdir="LR";
node [ shape="circle", style="bold, filled", fillcolor="#dddddd" ];
a -> b -> c -> d -> e -> f -> g -> h -> b;
subgraph
{
rankdir="TB";
rank="same";
c; d; e;
}
subgraph
{
rankdir="TB";
rank="same";
f; g; h;
}
}
如果我手动进行并分配排名以按照我的意愿排列,它会起作用:
digraph
{
rankdir="LR";
node [ shape="circle", style="bold, filled", fillcolor="#dddddd" ];
a -> b -> c -> d -> e -> f -> g -> h -> b;
{ rank="same"; c; h; }
{ rank="same"; d; g; }
{ rank="same"; e; f; }
}
Edit
刚刚尝试了该方法,效果很好。我确实必须取消最右边的边缘的约束,以防止它形成不对称的形状,但总体来说效果就像一个魅力(而且更直观)!
digraph
{
rankdir="LR";
node [ shape="circle", style="bold, filled", fillcolor="#dddddd" ];
a -> b -> c -> d -> e;
e -> f [ constraint="false" ];
b -> h -> g -> f [ dir="back" ];
}