【问题标题】:How to draw diagonal edges in Graphviz如何在 Graphviz 中绘制对角线
【发布时间】:2016-12-12 19:39:26
【问题描述】:

如何在 Graphviz(点语言)中的两个节点之间绘制对角线。

我想画下面的形状。

我试过了:

graph G {
V[pos="0,0"];
N[pos="40,40!"];
V -- N [label="NSUBJ"]   
}

但它会绘制正交线。除了我想用上面的订单号绘制多个子图!

【问题讨论】:

    标签: graph graphviz dot


    【解决方案1】:

    可以使用pos 属性,但在这种情况下,您必须使用neato 并为每个节点设置pos

    graph G {
        V [pos = "0,100"]
        N [pos = "50,0"]
    
        S [pos = "200,100"]
        VPC [pos = "150,0"]
        NPC [pos = "250,0"]
    
        V -- N [label="NSUBJ"]
    
        S -- VPC
        S -- NPC
    }
    

    然后使用以下内容:

    neato -n -Tpng -o test.png test.gv
    

    输出如下:

    如果使用不可见节点,也可以使线条对角线:

    graph G {
    
        node [shape=plaintext]
        labelloc="b"
        pencolor=transparent
    
        subgraph cluster_1 {
            label="(1)"
    
            S_1 [label="S"]
            VPC_1 [label="VPC"]
            NPC_1 [label="NPC"]
    
            V_1 [label="V"]
            invis_1 [style=invis]
            N_1 [label="N"]
    
            V_1 -- invis_1 [style=invis]
            V_1 -- N_1 [label="NSUBJ"]
    
            S_1 -- VPC_1
            S_1 -- NPC_1
        }
    
        subgraph cluster_2 {
            label="(2)"
    
            VPC_2 [label="VPC"]
            V_2_2 [label="V"]
            NPC_2 [label="NPC"]
    
            V_2 [label="V"]
            invis_2 [style=invis]
            N_2 [label="N"]
    
            V_2 -- invis_2 [style=invis]
            V_2 -- N_2 [label="COPCOMP"]
    
            VPC_2 -- V_2_2
            VPC_2 -- NPC_2
        }
    }
    

    运行这一系列命令会产生以下输出:

    ccomps -Cx test.gv | dot | gvpack -array_1 | neato -n2 -Tpng > test.png

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-30
      • 1970-01-01
      • 2012-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多