我正在尝试使用python绘制Berkeley-Stanford web graph与相关的edge list的邻接矩阵。结果应与此link中的一样。我的第一个尝试是使用如下的密集表示形式:
import matplotlib.pyplot as plt
import re
n=685230
matrix = [[0 for i in range(0,n)] for j in range(0,n)]
with open("web-BerkStan.txt", "r") as infile:
for line in infile:
li=line.strip()
if not li.startswith("#"):
i,j = re.split(r'\t+', li)
matrix[int(i)][int(j)] = 1
f = plt.figure()
plt.imshow(matrix, cmap='binary', interpolation='nearest')
plt.show()
f.savefig('graph.pdf', bbox_inches='tight')
该代码适用于n=10
,但是对于给定的n=685230
,它对于我正在考虑的网络图形的大小来说是不可行的。
或者,我尝试将密集表示替换为坐标格式:
matrix = []
with open("web-BerkStan.txt", "r") as infile:
for line in infile:
li=line.strip()
if not li.startswith("#"):
i,j = re.split(r'\t+', li)
matrix.append([int(i),int(j)])
其中matrix
现在是边缘列表。如何将边缘列表绘制为稀疏矩阵?