1

我必须为我从 .txt 文件加载为邻接列表的第二个图生成并绘制折线图和补充图。我已经尝试了很多方法,但我得到的只是错误。至今没有任何进展...

import numpy as np
import networkx as nx
import matplotlib.pyplot as plt

a = np.loadtxt('adjacencymatrix.txt', dtype=int) 
4

1 回答 1

1

您可以尝试对邻接矩阵进行补码。在这里,我假设您的邻接矩阵由 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 没有硬性规定。是一种更简单的方法。

于 2018-06-15T09:19:36.737 回答