如何设置图形填充区域?

How to set a graph-filling-area?

如何设置图形尝试填充分配给它的区域?随着节点数量的增加,它的尺寸只会减小,但也会保持在一行中,尽管垂直尺寸 (40) 允许向下放置。如果您删除 rankdir,那么它会垂直放置,但也会排成一行。

digraph "test_graph"{
  rankdir = LR;
  bgcolor = whitesmoke;
  graph [size = "15, 40"];
  node [shape = circle,
        style = filled,
        margin = 0,
        fontsize = 14,
        color = sandybrown];
  edge [fontsize = 10,
        arrowhead = vee];
  1->2 [label = "R"];
  2->3 [label = "R"];
  3->4 [label = "R"];
  3->5 [label = "B"];
  4->1 [label = "R"];
  5->6 [label = "U"];
  6->7 [label = "U"];
  7->8 [label = "U"];
  7->9 [label = "F"];
  8->5 [label = "U"];
  9->10 [label = "F"];
  10->11 [label = "D"];
  11->12 [label = "D"];
  12->13 [label = "D"];
  13->10 [label = "D"];
  13->14 [label = "L"];
  14->15 [label = "L"];
  15->16 [label = "D"];
  16->17 [label = "D"];
  17->18 [label = "D"];
  17->19 [label = "L"];
  18->15 [label = "D"];
  19->20 [label = "F"];
  20->21 [label = "F"];
  21->22 [label = "F"];
  21->23 [label = "L"];
  22->19 [label = "F"];
  23->24 [label = "L"];
  24->25 [label = "F"];
}

您将需要 select 合适的节点

  • 一条边相连
  • 以您喜欢的填充可用宽度的方式连接到其他节点

然后

  • 通过不可见边按所需顺序连接它们(这样您就可以避免 graphviz 对它们重新排序)
  • 将它们排在同一级别,使它们一个比一个低

具体来说,这意味着添加

1 -> 10 -> 19[ style = invis ];
{ rank = same; 1 10 19 }

就在右大括号之前,作为最后两行,将产生

据我了解您的要求,这就是您想要的。