graphviz-如何在直线箭头上创建标签

时间:2019-02-28 16:17:37

标签: graphviz

也许我正在尝试过度弯曲graphviz,但是会吗 可以拉直箭头吗?我需要标签在箭头上方,而不是标签/ xlabel的侧面;我使用框来保存本质上是标签文本的内容,因为在标签较长时在边缘使用标签似乎会导致古怪的行为。

digraph G {
    node [shape=rect style=filled
         fontcolor=white fontsize=12 fontname="Helvetica Bold"]
    edge [style=solid color="#777777"]

    // introduce nodes; set fill
    a1, a2, a3 [fillcolor="#438dd5"]
    c1         [fillcolor="#08427b"]

    b1, b2, b3 [fillcolor=white fontcolor=black fontname="Helvetica" shape=plain]

    a1 -> b1[dir=none]
    a2 -> b2[dir=none]
    a3 -> b3[dir=none]

    b1 -> c1
    b2 -> c1
    b3 -> c1

    { rankdir=LR  rank=same  a1 a2 a3  }
    { rankdir=LR  rank=same  b1 b2 b3 }
    { rankdir=LR  rank=same  c1 }
}

我得到的是

enter image description here

我想要什么:

enter image description here

1 个答案:

答案 0 :(得分:2)

我通常使用tables来做,没有边框和白色背景,而不是标签。您可能还需要使用headlabeltaillabel,因为在这种情况下,您可以使用labeldistancelabelangle精确控制它们的位置:

digraph G {
    node  [shape=rect style=filled
           fontcolor=white fontsize=12 fontname="Helvetica Bold"]
    graph [ranksep=1]
    edge  [style=solid color="#777777"]

    a1 [fillcolor="#438dd5"]
    a2 [fillcolor="#438dd5"]
    a3 [fillcolor="#438dd5"]
    c1 [fillcolor="#08427b"]

    a1 -> c1 [
        labeldistance=5
        labelangle=0
        headlabel=<
            <table bgcolor="white" border="0">
                <tr>
                    <td>b1</td>
                </tr>
            </table>
        >
    ]
    a2 -> c1 [
        labeldistance=4
        labelangle=0
        headlabel=<
            <table bgcolor="white" border="0">
                <tr>
                    <td>b2</td>
                </tr>
            </table>
        >
    ]
    a3 -> c1 [
        labeldistance=5
        labelangle=0
        headlabel=<
            <table bgcolor="white" border="0">
                <tr>
                    <td>b3</td>
                </tr>
            </table>
        >
    ]
}

结果:

enter image description here