【问题标题】:Layering in Graphviz using Dot Language使用点语言在 Graphviz 中分层
【发布时间】:2013-01-30 12:54:15
【问题描述】:

我正在处理一个点文件来呈现节点的分层。

我手上的图就是这个。 (对不起,我没有足够的声誉来发布图片..) http://www.flickr.com/photos/40328682@N03/8473003861/in/photostream/lightbox/

但是,我希望树(蓝色节点)不被压缩,并且每棵树只占用一层。我通过添加不可见节点和更多边来绘制一个示例,如下所示: http://www.flickr.com/photos/40328682@N03/8474093000/in/photostream/lightbox/

我尝试使用 $ rank = same $ 使黄色节点和蓝色节点(顶部)处于同一级别,但如果不插入不可见节点,我无法添加更多层。

有什么方法可以在不同等级之间添加更多层而不添加不可见节点?非常感谢!

【问题讨论】:

    标签: data-visualization graphviz dot


    【解决方案1】:

    如果子图之间没有连接,则无法控制其定位。使用rank=same是左边的图例中的常见方法以及不可见节点,以强制结构进入布局。

    如果您只需在两个节点之间添加最小量的空间,那么您可以在隐藏边缘上使用minlen =属性来强制所需的分离。这也在subgraph cluster ranking in dot

    这是:

    digraph {
        node [label = ""];
    
        A; B; C; D;
        E [style = invis];
    
        {   node [shape = box, label = ""];
    
            1 -> 2;
            3 -> { 4; 5; 6; 7; 8; 9; 10; 11; 12; }; 5 -> 13; 7 -> 14; 10 -> 15; 12 -> { 16; 17; }; 16 -> 18;
            19 -> { 34; 35; 36; 37; 38; 39; 40; 41; }; 35 -> 42; 36 -> 43; 40 -> { 45; 46; }; 41 -> 44;
            20 -> { 21; 22; 23};
        }
    
        {   edge [weight = 10];
            A -> B [minlen = 2];
            B -> C [minlen = 3];
            C -> D [minlen = 3];
            D -> E [style = invis];
        }
    
        {   rank = same; A -> 1; }
        {   rank = same; B -> 3; }
        {   rank = same; C -> 19; }
        {   rank = same; D -> 20; }
    }
    

    最后一棵树(来自@ 987654325的引用将落在左边的椭圆下,没有隐藏的E。如果这是不可接受的,则需要连接上述树中的一个节点的隐藏边缘节点20

    可以使用minlen =属性调整椭圆之间的间距。

    【讨论】:

      猜你喜欢
      • 2012-01-26
      • 2010-12-18
      • 2012-08-03
      • 2012-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多