將以下問題轉換爲graph.xml(不能在此處發佈所有代碼,但這裏是要點)。 NetworkX版本是1.6.2Python Networkx無法導出到具有屬性的graphml
我有一個稱爲圖G
networkx有向圖G = nx.DiGraph()
在作者列表格式加權邊緣(作者單位,AuthorB,重量)
G.add_weighted_edges_from(author_list)
填充它
我在這裏可以導出graphml和正常工作
nx.write_graphml(G, 'test.graphml')
我再計算出的PageRank在圖表上
graph_metric = nx.pagerank_numpy(G, weight='weight')
,然後在圖形屬性添加到節點
nx.set_node_attributes(G, 'pagerank', graph_metric)
如果我遍歷圖我可以打印出節點名稱和歌的PageRank
for n.d in G.nodes_iter(data=True):
print n, d
AuthorA {u'pagerank':0.0076688948270074164} ... ... ...
但如果更新我嘗試創建從圖中我得到了以下錯誤graphml屬性後:
File "/usr/lib/pymodules/python2.7/networkx/readwrite/graphml.py", line 111, in generate_graphml
writer.add_graph_element(G)
File "/usr/lib/pymodules/python2.7/networkx/readwrite/graphml.py", line 305, in add_graph_element
self.add_nodes(G,graph_element)
File "/usr/lib/pymodules/python2.7/networkx/readwrite/graphml.py", line 262, in add_nodes
self.add_attributes("node", node_element, data, default)
File "/usr/lib/pymodules/python2.7/networkx/readwrite/graphml.py", line 255, in add_attributes
scope=scope, default=default_value)
File "/usr/lib/pymodules/python2.7/networkx/readwrite/graphml.py", line 242, in add_data
raise nx.NetworkXError('GraphML writer does not support '
NetworkXError: GraphML writer does not support dict types as data values.
的思考?
也許您需要發佈更多的代碼...我只是想在這裏,它似乎正常工作。我是py26/nx1.6 IIRC。有一件事是,它抱怨說,你設置一個屬性爲一個字典的值,這是無效的。上面的代碼沒有這樣做,但一開始將找出哪個節點有一個無效值的屬性...將張貼代碼來做到這一點.... –
我沒有看到你發佈什麼這看起來像一個問題。不支持的類型的錯誤消息在網絡x-1.7中(稍微)得到了改進https://github.com/networkx/networkx/commit/661dcf479d9e597d6d7b83a1db7b8fbbb76f9599因此您可以考慮升級到更新的版本,並查看是否提供了哪些數據導致graphml編寫器投訴。 – Aric
保存爲GraphML時,不能自動序列化字符串。 [OSMnx](http://geoffboeing.com/2016/11/osmnx-python-street-networks/)例如有一個內置功能,用於將networkx網絡保存爲GraphML文件,以序列化節點和邊緣的字典屬性。 – eos