将Graphviz中边的权重降至零

3
我使用Graphviz创建了一个图表,我对它感到很满意,现在我需要添加一个边缘。目前我的图表如下所示:Current Graph(以下是dot源代码)
我需要添加一条从T到S的边缘(绿色),但是当我这样做时,整个图表就会混乱不堪。我知道应该让Graphviz处理布局,但是这个图表是一系列图表中的一个,我希望它们至少看起来大致相同。我尝试过使用图形集群和使用权重使所有其他边缘的权重非常高,并且新边缘的权重非常低,但是没有什么帮助。如何添加一条从T到S的边缘,而不用担心这条边缘会变得非常长?
digraph G {
  rankdir=LR
  subgraph clusterD3 {
  vSource [label="S*"]
    subgraph clusterD2 {
      color=white
      S
      T
      subgraph clusterD1 {
        color=white
        {rank=same; B A}
        {rank=same; D C}
        A->C 
        B->D  
        A->D 
        C->D 
        B->A 
        }   
        S->A 
        S->B 
        C->T 
        D->T 
     }
  vSink [label="T*"]
  vSource->A [color=red]
  vSource->B [color=red]
  vSource->C [color=red]
  vSource->D [color=red]
  vSource->T [color=red]
  A->vSink   [color=blue]
  B->vSink   [color=blue]
  C->vSink   [color=blue]
  D->vSink   [color=blue]
  S->vSink   [color=blue]
  }  
}
2个回答

3

添加

{rank=same;vSource;S}

解决了该问题:
digraph G {
  rankdir=LR
  subgraph clusterD3 {
  vSource [label="S*"]
    subgraph clusterD2 {
      color=white
      S
      T
      {rank=same;vSource;S}
      subgraph clusterD1 {
        color=white
        {rank=same; B A}
        {rank=same; D C}
        A->C 
        B->D  
        A->D 
        C->D 
        B->A 
        }   
        S->A 
        S->B 
        C->T 
        D->T 
     }
  vSink [label="T*"]
  vSource->A [color=red]
  vSource->B [color=red]
  vSource->C [color=red]
  vSource->D [color=red]
  vSource->T [color=red]
  A->vSink   [color=blue]
  B->vSink   [color=blue]
  C->vSink   [color=blue]
  D->vSink   [color=blue]
  S->vSink   [color=blue]
  T -> S     [color=green]
  }
}

1

constraint=false也可以起作用:

T -> S [颜色=绿色,约束=false]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接