如何在python中从networkx对象创建加权的2D数组

时间:2014-07-15 20:52:37

标签: python arrays numpy matplotlib

我对Python(以及一般的编程)完全陌生。我正在使用的程序生成了一个gpickle文件,我希望在2D数组中可视化其内容。

这是我到目前为止所做的:

import pickle
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt

P = np.load('/pathtoobject.gpickle')

这导致了这一行文字:

networkx.classes.graph.Graph object at 0x1d217d0

我已经能够使用...

创建无向图
nx.draw(P)
plt.show()

...但如果可能的话,我想创建一个加权的2D数组。我知道对象有83x83点。

2 个答案:

答案 0 :(得分:1)

您可以尝试将networkx图转换为"字典词典"使用networkx.convert.to_dict_of_dictsSciPy adjacency matrix。然后你可以使用matplotlib' s matshow()之类的东西来形象化它。

答案 1 :(得分:1)

给出G

等图表
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt

np.random.seed(2014)
A = np.random.randn(83, 83)
G = nx.from_numpy_matrix(A)

您可以使用nx.to_numpy_matrix来获取图形的邻接矩阵。正如ASGM建议的那样,您可以使用plt.matshow

绘制“热图”
B = nx.to_numpy_matrix(G)
plt.matshow(B)
plt.colorbar()
plt.show()

的产率 enter image description here