我已经使用 networkx 创建了一个图形,并将图形表示写入了一个点文件,以便使用 graphviz 显示。现在,节点具有颜色属性,我希望 graphviz 将具有相同颜色的节点彼此靠近放置。
例如,如果节点“足球”和节点“足球”的颜色都为“蓝色”,那么它们应该靠近,而颜色为“绿色”的节点“棒球”不会靠近节点“足球”和“足球” ”
- 如何让具有相同颜色的节点在 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')
关于visualization - 在 graphviz 中将具有相同颜色的节点彼此靠近分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19674316/