我必须生成并绘制第二张图的折线图和补码,我从.txt文件加载作为邻接列表。我已经尝试了很多方法,但我只得到了错误。到目前为止没有进展......
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
a = np.loadtxt('adjacencymatrix.txt', dtype=int)
答案 0 :(得分:2)
您可以尝试补充邻接矩阵。在这里,我假设您的邻接矩阵由0和1组成。因此,假设以下是邻接矩阵,存储在adjacency.txt
:
0,0,1,0,1,1
0,0,1,1,0,1
1,1,0,0,1,0
0,1,0,0,1,0
1,0,1,1,0,1
1,1,0,0,1,0
现在让我们绘制这个图表
import matplotlib.pyplot as plt
import networkx as nx
import numpy as np
A = np.loadtxt('adjacency.txt', delimiter=',', dtype=int)
G = nx.from_numpy_matrix(np.array(A))
nx.draw(G, with_labels=True)
现在为了完成图形的补充,我在这里假设你的意思是以某种方式补充边缘。因此,由于你有邻接矩阵,你可以使用np.bitwise_xor(或任何其他方式将1更改为0,反之亦然)将其反转,因为对1进行异或反转(即1变为0) 0成为1)
B = np.bitwise_xor(A,1)
G = nx.from_numpy_matrix(np.array(B))
nx.draw(G, with_labels=True)
您可以将图形边缘反转。例如,在初始图表中,node 3
的边缘为node 1
和node 4
,而在倒置图中,它具有到其他节点的边,即nodes 2, 5 and 3
**注意:**还有其他方法可以反转numpy数组。使用bitwise_xor没有硬性规定。 Here是一种更简单的方法。