如何从networkx对象在Python中创建加权二维数组

0 投票
2 回答
908 浏览
提问于 2025-04-18 13:28

我对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()

结果是这样的:

enter image description here

撰写回答