Layout graphviz-如何在矩形布局中循环排列节点?

Layout graphviz-如何在矩形布局中循环排列节点?,layout,graphviz,dot,Layout,Graphviz,Dot,预脚本 。。。当我完成这些示例时,我看到了,看起来很不错。 既然我已经把这个放在这里了,不妨问问:还有其他选择吗 原创帖子 在子图中,是否有一种方法可以自动在矩形布局中布置节点 例如,假设我有给定的结构: digraph { rankdir="LR"; node [ shape="circle", style="bold, filled", fillcolor="#dddddd" ]; a -> b -> c -> d -> e -> f

预脚本

。。。当我完成这些示例时,我看到了,看起来很不错。 既然我已经把这个放在这里了,不妨问问:还有其他选择吗

原创帖子

在子图中,是否有一种方法可以自动在矩形布局中布置节点

例如,假设我有给定的结构:

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;

    { rank="same"; c; h; }
    { rank="same"; d; g; }
    { rank="same"; e; f; }
}

编辑

刚刚试过这个方法,效果很好。我确实必须放松最右边的边缘,以防止它形成不对称的形状,但总体而言,它的工作方式很有魅力(而且更直观)


我不知道该把它放在哪里,但我会把它作为一个附带的答案贴在这里

我尝试了一个更大的循环:

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; };
}
这个还是有点乱

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