Graphviz:将边缘标签放在另一侧

24
这可能与该问题有关:如何在Graphviz中将边缘标签放置在边缘上:我有以下图形,我使用命令dot -Teps g.dot > g.eps进行可视化:
graph triple {
    node [shape=box]; User; Object; Tag;
    node [shape=diamond,style=filled]; Triple;
    {
        User -- Triple [label = "1"];
        Object -- Triple [label = "1"];
    }
    {
        rank=same;
        User;
        Object;
    }
    Triple -- Tag [label="n"];
}

我希望将标签放到图表左侧,使得用户和三元组之间更对称。

3个回答

29

在graphviz中无法手动放置边缘标签。

不过,您可以使用headlabellabeldistancelabelangle属性:

graph triple {
node [shape=box]; User; Object; Tag;
node [shape=diamond,style=filled]; Triple;
    {
        User   -- Triple [headlabel = "1", labeldistance=2.5, labelangle=20];
        Object -- Triple [headlabel = "1", labeldistance=2.5, labelangle=-20];
    }
    {
        rank=same;
        User;
        Object;
    }
    Triple -- Tag [label="n"];
}

输出:

graphviz 输出


2
为什么在上面的例子中需要“rank same”? - Pacerier

8

以下是使用 splines=false 和双边缘的第二种解决方法:

graph {
splines=false;
node [shape=box]; User; Object; Tag;
node [shape=diamond,style=filled]; Triple;
    {
        User   -- Triple [label = "1"];
        User   -- Triple [label = ""];
        Object -- Triple [label = ""];
        Object -- Triple [label = "1"];
    }
    {
        rank=same;
        User;
        Object;
    }
    Triple -- Tag [label="n"];
}

输出:

替代文本


0

我放弃尝试在Graphviz中让它工作。相反,我将其呈现为pdf格式,自己添加标签,并将pdf压平为新的pdf,以便标记成为pdf的一部分。


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