【问题标题】:Graphviz. How to automatically place the nodes in the right places图形化。如何自动将节点放置在正确的位置
【发布时间】:2013-10-23 20:18:50
【问题描述】:

此代码将节点放置在正确的位置。

digraph g {
    edge [dir=none];
    node [shape=box,fillcolor="palegreen",style="filled"];

    a -> b;
    a -> c
    b -> c
    b -> d
    b -> e
    d -> e
    c -> f
    e -> f

    a [label="A",pos="150,155!"];
    b [label="B",fillcolor="red",pos="75,75!"];
    c [label="C",pos="230,75!"];
    d [label="D",pos="0,0!"];
    e [label="E",pos="150,0!"];
    f [label="F",pos="300,0!"];
}

如何在不指定节点位置的情况下放置这样的节点?

【问题讨论】:

    标签: graphviz dot


    【解决方案1】:

    试试

    digraph g {
        edge [dir=none];
        node [shape=box,fillcolor="palegreen",style="filled"];
    
        a -> b;
        a -> c
        b -> c
        b -> d
        b -> e
        d -> e
        c -> f [constraint = false]; // Use to relax weight of edge
        e -> f
    
    { rank = same; b; c; } // Force specific nodes onto same height
    { rank = same; d; e; f; }
        a [label="A"];
        b [label="B",fillcolor="red"];
        c [label="C"];
        d [label="D"];
        e [label="E"];
        f [label="F"];
    }
    

    边缘属性constraint = false用于防止边缘影响边缘的位置。如果准确的水平定位不是很重要,请去掉这个以避免以后出现问题。

    rank = same 属性用于强制节点在图中处于同一级别,并将覆盖由边驱动的自然层次结构。您还可以使用约束属性在确定高度时对某些边缘进行折扣。

    选择取决于您的源数据结构,以及您是否希望能够在不进行任何编辑的情况下生成图表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-20
      • 2014-09-26
      • 2019-07-13
      • 2017-07-29
      • 2019-08-15
      • 1970-01-01
      相关资源
      最近更新 更多