【问题标题】:How do I get graphviz to generate fixed sized subgraphs?如何让 graphviz 生成固定大小的子图?
【发布时间】:2012-10-31 21:22:58
【问题描述】:

我已经为此苦苦挣扎了一段时间,似乎找不到直接的答案。我正在使用 graphviz 中的复合子图,似乎找不到正确的设置组合来强制两个子图相互对齐。

附上一个简单的例子来说明问题...

digraph g {
  compound=true;

  subgraph cluster_top {
    graph [color=black, label="Top", rank=min];

    nodeA; nodeB; nodeC
    cluster_top_DUMMY [shape=point style=invis]
  }

  subgraph cluster_service {
    graph [color=black, label="Bottom", rank=min];
    node1; node2; node3; node4; node5; extra_long_node
    cluster_bottom_DUMMY [shape=point style=invis]
  }
  cluster_top_DUMMY -> cluster_bottom_DUMMY [ style=invis ]
}

这会生成底部子图比顶部子图宽得多的输出。

我真正想要的是确保顶部和底部的宽度始终完全相同。此外,如果有太多节点无法适应可用宽度,则会生成额外的节点行。

【问题讨论】:

    标签: size graphviz dot subgraph


    【解决方案1】:

    一个可能的(糟糕但有效的)解决方案是使用不可见的节点并设置宽度。 考虑以下几点:

    digraph g {
      compound=true;
    
        subgraph cluster_top {
          graph [color=black, label="Top", rank=min];
    
          nodeAI0 [style=invisible]
          nodeAI1 [style=invisible]
          nodeAI2 [style=invisible,fixedsize=true,width=1.65]
          nodeA; nodeB; nodeC
          cluster_top_DUMMY [shape=point style=invis]
        }
    
        subgraph cluster_service {
          graph [color=black, label="Bottom", rank=min];
          node1; node2; node3; node4; node5; extra_long_node
          cluster_bottom_DUMMY [shape=point style=invis]
        }
        cluster_top_DUMMY -> cluster_bottom_DUMMY [ style=invis ]
    }
    

    不可见节点(NodeAI0-NodeAI2)占用空间。 fixedsize=true,width=1.65 使最后一个正好为 1.65 英寸。

    另一个更好的解决方案是通过添加以下内容来专门设置相关的较长节点(以避免必须寻找正确的值):

      node [fixedsize=true,width=0.75]
    

    在 Compound=true 部分之后。

    【讨论】:

      猜你喜欢
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 2018-08-08
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 2017-09-20
      • 1970-01-01
      相关资源
      最近更新 更多