我必须为我从 .txt 文件加载为邻接列表的第二个图生成并绘制折线图和补充图。我已经尝试了很多方法,但我得到的只是错误。至今没有任何进展...
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
a = np.loadtxt('adjacencymatrix.txt', dtype=int)
我必须为我从 .txt 文件加载为邻接列表的第二个图生成并绘制折线图和补充图。我已经尝试了很多方法,但我得到的只是错误。至今没有任何进展...
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
a = np.loadtxt('adjacencymatrix.txt', dtype=int)
您可以尝试对邻接矩阵进行补码。在这里,我假设您的邻接矩阵由 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 没有硬性规定。这是一种更简单的方法。