在graphviz中将具有相同颜色的节点分组到彼此附近

时间:2013-10-30 05:10:22

标签: visualization graphviz graph-visualization

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

例如,如果节点"足球"和节点"足球"两者都有颜色'蓝色'然后他们应该在一起,而节点"棒球"用颜色'绿色'不会靠近节点"足球"和"足球"

  1. 如何在Graphviz中将具有相同颜色的节点拉近距离;因此形成颜色簇?
  2. 感谢所有帮助,如果您需要更多信息,请告诉我们。)

1 个答案:

答案 0 :(得分:1)

您可以使用PyGraphviz使用带“簇”的点进行布局。 e.g。

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