首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何停止GraphViz点使我的集群更紧凑?

如何停止GraphViz点使我的集群更紧凑?
EN

Stack Overflow用户
提问于 2015-10-24 05:45:25
回答 1查看 647关注 0票数 3

我正在尝试使用dot同时布局几个未连接的图形,使用群集来绘制每个图形并设置每个图形周围的样式框。

问题是,虽然在没有集群的渲染中,布局非常整洁,并在一个集群内分离出未连接的图形,但一旦我尝试使用集群,它就会将这些图形挤压在一起,使用更少的空间,但使输出更不容易理解(特别是当它开始将不同大小的标签打包在一起时)。

下面是不带集群的版本:

下面是:

源代码--为了得到没有集群的版本,我只删除了"cluster“末尾的"r”。

代码语言:javascript
复制
digraph G {
  node[shape="rectangle",fontname="Nimbus Sans"];

  subgraph cluster_a {
    style=filled;
    bgcolor=lightgrey;
    node [style=filled,color=white];
    a_vq;    a_lvt;    a_wvw;    a_yvy;
    a_zgxl;    a_hqz;    a_yqq;    a_zofv;
    a_qvr;    a_qlz;    a_ycr;    a_ilq;
    a_ouw;    a_ryq;    a_lgl;    a_qvr->a_lgl;
    a_kwr;    a_qlz->a_kwr;    a_yl;    a_ilq->a_yl;
    a_kgyr;    a_hqz->a_kgyr;    a_llq;    a_ryq->a_llq;
    a_llo;    a_ryq->a_llo;    a_ll;    a_ryq->a_ll;
    a_ito;    a_ll->a_ito;    a_rql;    a_lgl->a_rql;
    a_ier;    a_kwr->a_ier;    a_lql;    a_yl->a_lql;
    a_vhgp;    a_lql->a_vhgp;

    a_vq->a_lvt;
    a_lvt->a_wvw;
    a_lvt->a_yvy;
    a_vq->a_zgxl;
    a_hqz->a_yqq;
    a_lvt->a_zofv;
    a_yvy->a_qvr;
    a_zgxl->a_qlz;
    a_zgxl->a_ycr;
    a_ycr->a_ilq;
    a_hqz->a_ouw;
    a_yqq->a_ryq;

}

  subgraph cluster_b {
    style=filled;
    bgcolor=lightgrey;
    node [style=filled,color=white];
    b_uel;
  }
}

我在一些地方尝试过摆弄packmode属性,但它似乎在没有修复问题的情况下破坏了样式,即使它工作正常,我也不能完全确定它是否能修复任何东西。

我希望保留具有集群布局的整洁的、空间上分离的图形--有人知道这是否可以做到吗?

EN

回答 1

Stack Overflow用户

发布于 2015-10-24 16:17:49

与其说是一个真正的答案,不如说是一种技巧,但它适用于你的样本--使用不可见的节点和边。我也简化了你的代码,不确定这是否适合你的任务,但它使它看起来更容易。

代码语言:javascript
复制
digraph G 
{
    node[ shape = "rectangle", fontname = "Nimbus Sans", height = .5, width = 1 ];

    subgraph cluster_a 
    {
        style   = filled;
        bgcolor = lightgrey;

        node[ style = invis ];                       // create
        inv_1; inv_2;                                // invisible nodes

        node[ style = filled, color = white ];
        // first unconnected graph
        a_hqz  -> { a_ouw a_yqq a_kgyr }        
        a_ouw  -> { inv_1 }       [ style = invis ]  // insert invisible nodes
        a_kgyr -> { inv_2 }       [ style = invis ]  // using invisible edges
        a_yqq  -> a_ryq;
        a_ryq  -> { a_llq a_llo a_ll }
        a_ll   -> a_ito;
        // second unconnected graph
        a_vq   -> { a_lvt a_zgxl }
        a_lvt  -> { a_wvw a_yvy a_zofv }
        a_zgxl -> { a_qlz a_ycr }
        a_yvy  -> a_qvr -> a_lgl -> a_rql;
        a_qlz  -> a_kwr -> a_ier;
        a_ycr  -> a_ilq -> a_yl -> a_lql -> a_vhgp;     
    }

    subgraph cluster_b 
    {
        style   = filled;
        bgcolor = lightgrey;
        node[ style = filled, color = white ];
        b_uel;
    }
}

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33311857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档