visualization - 在 graphviz 中将具有相同颜色的节点彼此靠近分组

标签 visualization graphviz graph-visualization

我已经使用 networkx 创建了一个图形,并将图形表示写入了一个点文件,以便使用 graphviz 显示。现在,节点具有颜色属性,我希望 graphviz 将具有相同颜色的节点彼此靠近放置。

例如,如果节点“足球”和节点“足球”的颜色都为“蓝色”,那么它们应该靠近,而颜色为“绿色”的节点“棒球”不会靠近节点“足球”和“足球” ”

  1. 如何让具有相同颜色的节点在 Graphviz 中绘制得更紧密;因此形成颜色簇?

感谢您的帮助,如果您需要更多信息,请告诉我:)

最佳答案

您可以使用 PyGraphviz 使用带“簇”的点进行布局。 例如

import networkx as nx

G = nx.Graph()
G.add_node(1, color='blue', style='filled')
G.add_node(2, color='red', style='filled')
G.add_edge(1,2)
G.add_node(3, color='blue',style='filled')
G.add_node(4, color='red',style='filled')
G.add_edge(3,4)
G.add_edge(4,10)
G.add_path([10,20,30,40,50])

A = nx.to_agraph(G) # uses pygraphviz
red_nodes = [n for n,d in G.node.items() if d.get('color')=='red']
blue_nodes = [n for n,d in G.node.items() if d.get('color')=='blue']
A.add_subgraph(red_nodes, name = 'cluster1', color='red')
A.add_subgraph(blue_nodes, name = 'cluster2', color='blue')
A.write('colors.dot')
A.layout('dot')
A.draw('colors.png')

enter image description here

关于visualization - 在 graphviz 中将具有相同颜色的节点彼此靠近分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19674316/

相关文章:

r - 桑基图中的标签大小(riverplot 包)

graphviz - 如何在主图中以点形式布置多个子图?

r - 如何在 ggplot 气泡图中添加两个不同大小的点?

javascript - 在 Javascript 中链接可视化库

python - 如何在 PyX 中生成任何颜色

R&ggplot2 : Sparklines from dynamic variables (based on query results)

javascript - 用于时间线可视化的 SIMILE 时间线的替代方案?

graphviz - 如何在Graphviz中允许重叠的边缘?

svg - 是否有事件监听器来检测鼠标在点/SVG 图形上的点击?

matlab - 以节点之间的链接绘制圆形节点网络