我有一个巨大的图形,其中至少有100个节点紧密连接在graphviz中。我正在寻找能够自动化来自任何给定节点的边缘颜色的方法,以便颜色是唯一的。我有从每个节点出来的接近30个边缘。谢谢 !!如何自动化从graphviz中的节点出来的边缘颜色
3
A
回答
1
您是否需要某些需要点文件并生成新的彩色点文件?或者你有一些程序或脚本产生你的点文件? (使用什么语言?)
我喜欢为节点(或簇)选择随机中等强度的颜色,并使节点背景成为该颜色的较亮版本,并使退出的边缘成为该颜色的较暗版本。
例如,在java中我有两个这样的工具方法。
public static Color hashColor(Object value) {
if (value == null) {
return Color.WHITE.darker();
} else {
int r = 0xff - (Math.abs(1 + value.hashCode()) % 0xce);
int g = 0xff - (Math.abs(1 + value.hashCode()) % 0xdd);
int b = 0xff - (Math.abs(1 + value.hashCode()) % 0xec);
return new Color(r, g, b);
}
}
/**
* @return a hex Color string in the format #rrggbb.
*/
public static String encodeColor(Color color) {
return "#" + String.format("%06x", color.getRGB() & 0xffffff);
}
1
我有一个类似的问题,我有一个节点的负载节点出来。
我用sfdp(点无法处理节点的数量)和-Goverlap = prism选项,这很好地分开了事情。
1
你这里由GraphViz的接受所有颜色的列表:http://www.graphviz.org/doc/info/colors.html
如果您生成自己的程序的图形,以简单的方式具有独特的颜色是把所有这些颜色在列表中,并在有新的边缘时从这个列表中选择一个。像这样的伪代码:
List colors = {red, blue, green, ...};
for edge in edges:
write(edge.source +
" -> " +
edge.sink +
" [color=\"" +
color.next() +
"\"];\n"
);
更干净的方法是从RGB代码中定义颜色。你可以这样做是这样的:
digraph G
{
A -> B
[
color="#AABBCC"
]
}
现在你需要做的是为您的所有边缘之间的十六进制数#000000和#FFFFFF。颜色格式在文档中提供:http://www.graphviz.org/doc/info/attrs.html#k:color
相关问题
- 1. 如何让节点间隔出来缩短GraphViz中的边缘?
- 2. graphviz:颜色方面的边缘
- 3. 在graphviz中从节点到边缘绘制边缘
- 4. Graphviz - 节点之间的水平边缘
- 5. Graphviz允许边缘节点重叠
- 6. d3.js点击分级边缘绑定节点颜色变化
- 7. 获取graphviz来绘制边缘上方的节点
- 8. 的Graphviz:如何改变边框颜色
- 9. 不同颜色的graphviz节点
- 10. Graphviz如何控制边缘
- 11. 如何用Graphviz注释节点和边缘?
- 12. 从graphviz分组输出边缘
- 13. 在GraphViz中显示网络的任意图节点和边缘
- 14. graphviz中的边缘布局固定节点位置
- 15. 权以点(Graphviz的)左边缘
- 16. Jgrapht边缘颜色
- 17. 添加具有颜色属性的边缘/节点
- 18. 更改边缘的颜色
- 19. 如何控制graphviz中的节点位置(即避免边缘交叉)
- 20. 如何将边缘标签放置在graphviz的边缘
- 21. Graphviz for Matlab:删除没有边缘的节点
- 22. Graphviz共享节点或边缘之间的属性
- 23. graphviz中的边和节点的布局
- 24. 如何使边缘在Graphviz中重叠?
- 25. Graphviz交叉边缘
- 26. Graphviz隐藏的边缘
- 27. graphviz的联合边缘
- 28. 在Graphviz中改变从下方到上方节点的边缘放置
- 29. 移动的Graphviz边缘闪开
- 30. networkx边缘到节点节点到边缘的表示