python - 在 Python 中将 nx.write_gexf 用于在节点和边上具有字典数据的图形

标签 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

最佳答案

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

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

这不是由 GEXF 编写器处理的。

如果您坚持使用字符串、数字等,那么您就不会遇到这个问题。

关于python - 在 Python 中将 nx.write_gexf 用于在节点和边上具有字典数据的图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17244062/

相关文章:

python - 扭曲的链接回调在一起不传递数据

java - Python 中的 select.select 相当于 Java 中的 select.select

neo4j - 将 Neo4j 数据导入 Gephi 0.9.1

python - 如何在带有错误处理的 for 循环中进行迭代

python - 如果使用 Python fileinput.FileInput(...) 不存在该行,则尝试向文本文件添加该行时遇到问题

python-2.7 - 如何找到shortest_path中的特定点/坐标?

python - 类型错误 : 'NodeView' object does not support item assignment - NetworkX

python-3.x - Networkx 邻居集不打印

matplotlib - networkx 在图中间的位置(最大)节点

gephi - 使用 Gephi 移动多个节点