我如何获得的graphviz生成固定大小的子图?(How do I get graphviz to

2019-08-02 15:04发布

我一直在挣扎了一会儿,似乎无法找到一个直接的答案。 我在与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 ]
}

这产生与底部子比顶部子图显著较宽的输出。

我真正想要的是确保顶部和底部总是一样宽。 另外,如果有太多的节点,以适合可用的宽度,它会产生节点的其他行。

Answer 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)乘坐空间。 固定大小= TRUE,宽度= 1.65,使最后一个采取完全相同1.65英寸。

另外,更好的解决方案是还设置了相关的较长节点具体为(以避免去寻找正确的值)加入类似:

  node [fixedsize=true,width=0.75]

后的化合物=真部。



文章来源: How do I get graphviz to generate fixed sized subgraphs?