微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Graphviz如何修复群集的x位置

如何解决Graphviz如何修复群集的x位置

Graphviz image

目前,我正在尝试修复群集的x位置,因为它们似乎四处移动以创建混乱的图形。所有子图都有rank=samenewrank=true。仅对于从一个群集到另一个群集的边缘,constraint的值设置为true

尝试了http://martin-loetzsch.de/S-DOT/constraint.html中的许多选项,但无法正常使用。有谁知道为什么子图像上面那样水平移动?

// layered_view
digraph layered_view {
    bgcolor=transparent fontsize=8 nodesep=0.2 rankdir=TB splines=ortho
    switch_1 -> lake [label="" color=gold4 constraint=True dir=both style=solid]
    switch_1 -> lake [label="" color=chartreuse4 constraint=True dir=both style=solid]
    switch_1 -> switch_2 [label="" color=gold4 constraint=True dir=both style=solid]
    switch_1 -> switch_2 [label="" color=chartreuse4 constraint=True dir=both style=solid]
    switch_1 -> azure_1 [label="" color=gold4 constraint=True dir=both style=solid]
    switch_1 -> azure_1 [label="" color=chartreuse4 constraint=True dir=both style=solid]
    switch_2 -> watson [label="" color=goldenrod4 constraint=True dir=both style=solid]
    lake -> tsX [label="" color=chartreuse4 constraint=True dir=both style=solid]
    lake -> ptX [label="" color=chartreuse4 constraint=True dir=both style=solid]
    switch_1 -> dropBox [label="" color=chartreuse4 constraint=True dir=both style=solid]
    switch_1 -> ptX [label="" color=gold4 constraint=True dir=both style=solid]
    switch_1 -> tsX [label="" color=goldenrod4 constraint=True dir=both style=solid]
    switch_1 -> watson [label="" color=goldenrod4 constraint=True dir=both style=solid]
    // software
    subgraph cluster_software {
        bgcolor=green color=black concentrate=true fontsize=8 label=Software newrank=true rank=same splines=ortho
        // applications
        subgraph cluster_applications {
            bgcolor=green color=black concentrate=true fontsize=8 label=Applications newrank=true rank=same splines=ortho
            tsX [label=tsX color=black fillcolor=chartreuse1 fixedsize=true shape=rectangle style=filled width=1.3 xlabel=""]
            ptX [label=ptX color=black fillcolor=chartreuse1 fixedsize=true shape=rectangle style=filled width=1.3 xlabel=""]
        }
        // cloud
        subgraph cluster_cloud {
            bgcolor=green color=black concentrate=true fontsize=8 label=Cloud newrank=true rank=same splines=ortho
            azure_1 [label=azure_1 color=black fillcolor=darkolivegreen1 fixedsize=true shape=rectangle style=filled width=1.3 xlabel=""]
            dropBox [label=dropBox color=black fillcolor=darkolivegreen1 fixedsize=true shape=rectangle style=filled width=1.3 xlabel=""]
        }
    }
    // systems
    subgraph cluster_systems {
        bgcolor=green color=black concentrate=true fontsize=8 label=Systems newrank=true rank=same splines=ortho
        // computing
        subgraph cluster_computing {
            bgcolor=green color=black concentrate=true fontsize=8 label=Computing newrank=true rank=same splines=ortho
            "ex-uni" [label="ex-uni" color=black fillcolor=cadetblue fixedsize=true shape=rectangle style=filled width=1.3 xlabel=""]
        }
        // sensors
        subgraph cluster_sensors {
            bgcolor=green color=black concentrate=true fontsize=8 label=Sensors newrank=true rank=same splines=ortho
            watson [label=watson color=black fillcolor=blue fixedsize=true shape=rectangle style=filled width=1.3 xlabel=""]
        }
        // storage
        subgraph cluster_storage {
            bgcolor=green color=black concentrate=true fontsize=8 label=Storages newrank=true rank=same splines=ortho
            lake [label=lake color=black fillcolor=deepskyblue2 fixedsize=true shape=rectangle style=filled width=1.3 xlabel=""]
        }
    }
    // network
    subgraph cluster_network {
        bgcolor=green color=black concentrate=true fontsize=8 label=Network newrank=true rank=same splines=ortho
        // switch
        subgraph cluster_switch {
            bgcolor=green color=black concentrate=true fontsize=8 label=Switch newrank=true rank=same splines=ortho
            switch_1 [label=switch_1 color=black fillcolor=gold fixedsize=true shape=rectangle style=filled width=1.3 xlabel=""]
        }
    }
    // artifacts
    subgraph cluster_artifacts {
        bgcolor=green color=black concentrate=true fontsize=8 label=Artifacts newrank=true rank=same splines=ortho
        switch_2 [label=switch_2 color=black fillcolor=white fixedsize=true shape=rectangle style=filled width=1.3 xlabel=""]
    }
}

解决方法

我还没有找到直接移动集群的简单方法。这是可以执行您想要的(我认为)的消息,并且不会过多地混淆源代码:

  1. 用/ * ... * /注释掉所有边缘(边缘导致不对齐)
  2. 在最后添加这些行(以产生所需的对齐方式):
switch_1 -> switch_2  -> watson [style=invis]  
watson -> {azure_1 tsX}         [style=invis]
  1. 使用 -Tdot 运行作为输出文件格式
  2. 编辑输出文件,然后重新插入注释掉的边缘
  3. 使用-n选项运行neato以固定节点和群集并添加边缘

neato -n -Tpng mylile.dot> myfile.png

捐赠:
enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。