NetworkX使用来自文件的nodelist值绘制grid_2d_graph

时间:2011-12-04 12:17:06

标签: python graph nodes networkx

我正在尝试使用来自file的节点列表值绘制grid_2d_graph。

list1 = [(0,0),(0,1),(1,0)] 
nx.draw_networkx_nodes(G, pos, nodelist=list1, node_color='b')

在上面的语句中,我想从文件中读取nodelist,而不是手动设置nodelist。该文件将包含应该涂成蓝色的节点列表。

我尝试从文件中读取并将检索到的值放在nodelist中,但是它的给定错误Node'(0,1)'没有位置,因为可能是我将它存储为字符串。

任何人都可以建议如何从文件中读取节点列表值。

1 个答案:

答案 0 :(得分:0)

这是一种将节点颜色存储为节点属性并将其保存在GraphML格式文件中的方法。然后你可以读取该文件并将节点和属性解压缩到列表中以传递给nx.draw()(或nx.draw_networkx_nodes())

import matplotlib.pyplot as plt
import networkx as nx
# create graph 
G=nx.Graph()
# with nodes that have attribute "color"
G.add_nodes_from('abc',color='r')
G.add_nodes_from('de',color='b')
G.add_edges_from([('a','b'),('b','d'),('c','e'),('b','e')])
# save/load in graphml format
nx.write_graphml(G,'color_test.graphml')
H=nx.read_graphml('color_test.graphml')
# get nodes and colors as lists from graph attributes
nodes,colors=zip(*nx.get_node_attributes(H,'color').items())
nx.draw(H,nodelist=nodes,node_color=colors)
plt.show()