2

我已经使用我非常满意的 graphviz 创建了一个图表,我需要再添加一个边缘。我目前有这个:

当前图表

(以下点中的来源)

我需要添加一条从 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]
  }  
}
4

2 回答 2

2

添加

{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]
  }
}
于 2012-11-04T17:04:52.147 回答
1

constraint=false 也有效:

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

于 2021-10-14T10:01:25.023 回答