代码之家  ›  专栏  ›  技术社区  ›  Motti

graphviz中簇间的直边

  •  20
  • Motti  · 技术社区  · 15 年前

    我正在尝试在graphviz中的集群之间建立一个边缘,该边缘不会影响排名。

    看起来不错:

    有向图{ 子图聚类{ 一 乙 } 子图聚类{ C D } A & GT;B B->C[约束=假] C & gt;D } < /代码>

    但是,当我向 c->d添加标签时,edge会尝试绕开所说的标签(看起来很难看)。

    有向图{ 子图聚类{ 一 乙 } 子图聚类{ C D } A & GT;B B->C[约束=假] C->D[标签=雅达] } < /代码>

    我知道如何使边缘保持在 b c 直线之间吗?

    看起来不错:

    digraph {
      subgraph clusterX {
        A    
        B
      }
    
      subgraph clusterY {
        C
        D
      } 
    
      A -> B
      B -> C [constraint=false]
      C -> D
    }
    

    但是,当我将标签添加到 C -> D 边缘 B -> C 边缘试图绕过所说的标签(它看起来很难看)。

    digraph {
      subgraph clusterX {
        A    
        B
      }
    
      subgraph clusterY {
        C
        D
      } 
    
      A -> B
      B -> C [constraint=false]
      C -> D [label=yadda]
    }
    

    我知道怎样才能保持优势 B C 笔直?

    2 回复  |  直到 6 年前
        1
  •  30
  •   marapet    15 年前

    实现这一点的最简单方法是向点文件添加 spline=false -这将强制边缘呈现为直线:

    有向图{ 花键=假; 子图聚类{ A; B; } 子图聚类{ C; D; } A & GT;B; B->C[约束=假]; C->D[标签=雅达]; } < /代码>

    输出:

    到点文件-这将强制将边缘渲染为直线:

    digraph {
     splines=false;
     subgraph clusterX {
        A;
        B;
     }
    
     subgraph clusterY {
        C;
        D;
     } 
    
     A -> B;
     B -> C [constraint=false];
     C -> D [label=yadda];
    }
    

    输出:

    graphviz output

        2
  •  3
  •   snoob dogg    7 年前

    您可以使用此版本:

    有向图G{ 子图簇{ A[pos=“0,1!”; b[pos=“0,0!”; } 子图簇{ C[pos=“1,1!”; D[pos=“1,0!”; } A & GT;B B->C[label=“雅达”] C & GT; } < /代码>

    然后你用neato(不是dot)

    neato-tpng-oyadda.png yadda.dot
    < /代码> 
    
    

    结果是:

    然后你用neato(不是dot)

    neato -Tpng -oyadda.png yadda.dot
    

    结果是:

    enter image description here

    推荐文章