Graphviz:用颜色表示边的方向

8

你好
我能否让graphviz以一种标识方向的方式着色边缘?例如,靠近源节点的边缘部分可能是蓝色的,然后随着接近目标节点,逐渐淡化为红色。或者是否有其他类似graphviz的绘图工具可以做到这一点?

任何在这方面的帮助都将不胜感激。

2个回答

11

好的,我不知道你当前的dot文件的任何信息,所以我必须先做出一些假设。首先处理简单的情况,区分边的方向是箭头朝向的任务(指向)和箭尾朝向的任务(指出)。只有在你的图形类型是有向图形的情况下,你的图形才会呈现这些内容,你可以在dot文件的顶部设置它,例如,

digraph G {
    node[style=filled, color=cornflowerblue, fontcolor=white, fontsize=10, 
          fontname='Helvetica']
    edge[arrowhead=vee, arrowtail=inv, arrowsize=.7, color=maroon, fontsize=10,
          fontcolor=navy]

    a1 -> a2;
    a2 -> a4 [taillabel="TL     "];
    a2 -> a5 [headlabel="       HL"];
    a4 -> a6 [label="  ordinary edge label"]
}
如果你已经创建了一个有向图,但由于某些原因你想要另外一个指示器来显示边的方向,那么我能想到的唯一相关边属性是 headlabeltaillabel 属性,它允许你指定标签放置在边的哪一端。上面的小点文件将呈现这个图形:

alt text


1
谢谢您的回复 :) 我知道graphviz的这个功能,但问题是我的图是一个128节点的环形图,它们之间有很多连接。因此,箭头头部对于连接的方向并不是非常信息化,因为一个节点的入箭头头部和出箭头尾部会聚集在一起,不清晰地显示。这就是为什么我正在探索其他选项来区分连接的源和目标的原因。 - Puneet
我在我的回答中提到了两个“特性”,而不是一个;特别是考虑到你的图表的奇特性质,第二个特性可能对你有用。 - doug
我们如何更改个别边缘的颜色? - MuneshSingh

5
自2012年和2.30.0版本之后,Graphviz支持边缘的多种颜色:color="blue;0.5:red" 应该使得离源更近的一半为蓝色,离目标更近的一半为红色。 更准确地说

如果colorList中没有分数,则使用列表中给定的顺序绘制每个颜色的平行样条线或线条。

如果有头箭头,则使用列表中的第一种颜色进行绘制;如果有尾箭头,则使用第二种颜色。这支持绘制相对的边缘的常见情况,但是使用平行样条线而不是单独路由的多边形。

如果使用了任何分数,则按系列绘制颜色,每个颜色大致给出其指定的分数。


它的运行结果与原作者意图不符。它创建了一条由两条分离的线组成的边缘,一条蓝色的和一条红色的,而不是一个蓝头红尾的形状。 - SOFe
谢谢,编辑后它运行得很好。虽然它仍然不是渐变,但至少它改变了颜色。 - SOFe
是的,似乎不支持梯度。我想知道添加梯度需要多少努力... - Alexey Romanov

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