在Python中使用nx.write_gexf来获取在节点和边缘上具有dict数据的图形

时间:2013-06-21 20:47:14

标签: python networkx gephi

我有一个使用Python中的networkx包构建的图,它具有与节点和边相关联的数据属性。这些属性是带有嵌套字典的字典(或列表)。由于数据类型,我无法弄清楚如何将此图形写入.gexf格式(或.graphml等)。

有没有办法让write_gexf将这些数据类型解析为XML?或者还有其他一些解决方法吗?

以下是一个例子:

1 import networkx as nx
2
3 G = nx.graph()
4 G.add_node(0, attr1 = { 'name1' : 'Alice', 'name2' : 'Bob' }, attr2 = 5)
5 G.add_node(0, attr1 = { 'name1' : 'Calvin', 'name2' : 'Hobbes' }, attr2 = 6)
6 G.add_edge(0,1, likes = ['milk', 'oj'])
7
8 nx.write_gefx(G,"test.gefx")

给出错误:

Traceback (most recent call last):
File "so_write_gefx.py", line 8, in <module>
nx.write_gexf(G,"test.gexf")
...
line 378, in add_attributes
for val,start,end in v:
ValueError: too many values to unpack

1 个答案:

答案 0 :(得分:4)

GEXF格式仅指定一组相当简单的数据类型。 在您的示例中,您将边缘数据属性“likes”设置为列表

G.add_edge(0,1, likes = ['milk', 'oj'])

这不是由GEXF作家处理的。

如果您坚持使用字符串,数字等,那么您将不会遇到此问题。