【问题标题】:graphviz: direction of edges in terms of colorgraphviz:颜色方面的边缘方向
【发布时间】:2011-05-14 04:12:14
【问题描述】:


我可以让graphviz以识别方向的方式为边缘着色吗?例如,靠近其源节点的边缘部分可能是蓝色的,然后随着它靠近目标节点逐渐变暗为红色。或者是否有其他绘图工具(如 graphviz)可以做到这一点?

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

【问题讨论】:

    标签: graph colors graphviz edges


    【解决方案1】:

    好吧,我对您当前的点文件一无所知,所以我必须做出几个假设。首先处理简单的情况,区分边缘的方向是箭头(指向)和箭头(指向)的工作。只有当您的图表类型是 有向 图表时,您的图表才会呈现这些图表,您将其设置在点文件的顶部,例如,

    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 属性,允许您指定放置标签的边的哪一端。上面的小点文件会渲染这个图:

    【讨论】:

    • 感谢您的回复:)我知道graphviz的这个功能,但问题是我的图是一个128节点的圆形图,它们之间有很多连接。因此,箭头对于连接方向的信息不是很丰富,因为节点处的传入箭头的头部和传出箭头的尾部会聚集在一起并且无法清晰显示。这就是为什么我正在探索其他选项来区分连接的源和目标
    • 我在回答中提到了两个“功能”,而不是一个;特别是考虑到您的图表的特殊性质,其中第二个可能对您的情况有用。
    • 我们如何改变单个边缘的颜色?
    【解决方案2】:

    自 2012 年和 2.30.0 起,Graphviz 支持多种边缘颜色:color="blue;0.5:red" 应该使一半更接近源蓝色,而另一半更接近目标红色。 More precisely:

    如果 colorList 没有分数,则使用平行样条或直线绘制边缘,列表中的每种颜色按照给定顺序绘制一条。

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

    如果使用任何分数,则按顺序绘制颜色,每种颜色大致被赋予其指定的边缘分数。

    【讨论】:

    • 它不像 OP 预期的那样工作。它不是一个蓝色的头和一个红色的尾巴,而是用两条单独的线创建一个边缘,一条蓝色和一条红色。
    • 谢谢,编辑后效果很好。虽然它仍然不是渐变,但至少它改变了颜色。
    • 是的,似乎不支持渐变。我想知道要增加多少努力......
    猜你喜欢
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 2016-05-02
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多