前脚本
……就在我完成这些例子的制作时,我看到了’roundtrip’ flow topic,看起来不错.
既然我已经把它放在这里,不妨问:还有其他选择吗?
原帖
有没有办法在子图中自动布局矩形布局中的节点?
举个例子,假设我有给定的结构:
digraph
{
rankdir="LR";
node [ shape="circle", style="bold, filled", fillcolor="#dddddd" ];
a -> b -> c -> d -> e -> f -> g -> h -> b;
}
这产生了图表
我的目标是让它们排成一个矩形,有三个节点的行,形成
如果我试图限制排名并改变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; }
}
编辑
刚试过这个方法,效果很好.我确实不得不取消最右边的边缘,以防止它形成不对称的形状,但总体来说就像一个魅力(更直观)!
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" ];
}
最佳答案 不确定在哪里放这个,但我会继续发布并将其作为旁边的答案发布.
我尝试了一个更大的周期:
digraph
{
rankdir="LR";
node [ shape="circle", style="bold, filled", fillcolor="#dddddd" ];
x -> y;
y -> aa [ constraint="false" ];
aa -> ab -> ac -> ba;
{ rank="same"; ba -> bb -> bc -> ca; }
da -> cc -> cb -> ca [ dir="back" ];
{ rank="same"; aa -> dc -> db -> da [ dir="back" ]; };
}
还尝试了一个蛇形图案:
digraph
{
rankdir="LR";
node [ shape="circle", style="bold, filled", fillcolor="#dddddd" ];
x -> y;
y -> aa [ constraint="false" ];
aa -> ab -> ac;
ac -> ba [ constraint="false" ];
bc -> bb -> ba [ dir="back" ];
bc -> ca [ constraint="false" ];
ca -> cb -> cc;
cc -> da [ constraint="false" ];
dc -> db -> da [ dir="back" ];
y -> dc [ dir="back", constraint="false" ];
// { rank="same"; aa; bc; ca; dc; };
}
这个仍然有点凌乱.