如何从networkx对象在Python中创建加权二维数组
我对Python(以及编程)完全是新手。一个我正在使用的程序生成了一个gpickle文件,我想把里面的内容可视化成一个二维数组。
这是我到目前为止所做的:
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()
不过,我想如果可能的话,创建一个加权的二维数组。我知道这个对象有83x83的点。
2 个回答
1
你可以试着把networkx图转换成一个“字典的字典”,可以使用networkx.convert.to_dict_of_dicts这个工具,或者使用SciPy的邻接矩阵。然后,你可以用像matplotlib的matshow()
这样的函数来可视化它。
2
假设你有一个图,比如说 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()
结果是这样的:
