使用节点属性作为NetworkX

时间:2017-03-03 15:19:09

标签: python list-comprehension networkx

我使用NetworkX来表示一些图表。我的节点使用id命名,但是当我绘制图形时,我想使用保存在节点属性中的字符串。这里节点的外观如下:

print( graph.nodes(data=True)[:3], type(graph.nodes(data=True)),)
[('#per466', {'NormalizedName-sp': 'Mahlón', 'type': 'person', 'Gender': 'male'}), ('#per95', {'NormalizedName-sp': 'Isaí', 'type': 'person', 'Gender': 'male'}), ('#per14', {'NormalizedName-sp': 'Dios', 'type': 'person', 'Gender': 'none'})] <class 'list'>

我尝试使用列表推导来访问此信息,然后使用draw_networkx函数:

specific_labels = [dictionary['NormalizedName-sp'] for item in graph.nodes(data=True) for dictionary in item[1].items()]
nx.draw_networkx(graph, pos, labels = specific_labels, width = widths, font_size=13, alpha=0.1, edge_color="blue", node_shape=None)

列表理解不起作用,我很确定有一种更简单的方法来访问特定属性并将其用作标签。任何帮助,请?

更新:

好的,我明白了:

labels = nx.get_node_attributes(graph,'NormalizedName-sp')
nx.draw_networkx(graph, pos, labels = labels, width = widths, font_size=13, alpha=0.1, edge_color="blue", node_shape=None)

这比列表理解更容易......

非常感谢!

0 个答案:

没有答案