如何在Graphviz dot中为边缘和节点形状定义双线?

35

如何使用GraphvizDot语言为边缘和节点设置样式,以实现如下图中“LEGAL”和“TAX DISC”节点所示的双线样式?

ER Diagram

3个回答

56

使用节点上的[peripheries=2]可以创建双重形状。

通过指定边缘的多个颜色,用冒号分隔,可以创建双重边缘。在这种情况下,请两次使用相同的颜色:[color="black:black"](或者为了稍微分开它们,请使用 [color="black:invis:black"])。

我最终成功了!抱歉,答案有点“演化” :-)

例如:

graph G {
    Foo [peripheries=2]
    Foo -- Bar [color="black:white:black"]
}

2
在非白色背景或对象中使用颜色white可能会导致问题。请参见我的答案以获取更好的解决方案。 - Mr. Lance E Sloan

16

关于使用peripheries属性进行多个节点轮廓的正确答案已被接受

但是,在节点之间绘制广泛分离的双边缘线时,使用颜色white并不理想。如果这样的边缘线在非白色背景上绘制或穿过非白色对象,则会出现白线。更好的方式是使用其中一种颜色noneinvis。要更新接受答案的示例的一部分:

graph G {
    Foo [peripheries = 2]
    Foo -- Bar [color = "black:invis:black"]
}

有关更多信息,请参阅Graphviz颜色文档


0
(有关普通边缘和节点的其他答案,请参见)
三色解决方案无法处理带有dir="back"的有向边。
digraph A {
    foo -> bar [dir = "back", color = "black:invis:black"];
}

结果会产生以下输出:

enter image description here

我尝试使用invis层包裹它。与普通箭头相比,由于边缘宽度增加,看起来有点奇怪,但至少读者可以理解:

digraph A {
    foo -> bar [dir = "back", color = "invis:black:invis:black:invis"];
}

enter image description here

然而,这对于前向边是行不通的。


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