NetworkX:线图及其补充

时间:2018-06-14 18:10:41

标签: python graph line networkx complement

我必须生成并绘制第二张图的折线图和补码,我从.txt文件加载作为邻接列表。我已经尝试了很多方法,但我只得到了错误。到目前为止没有进展......

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

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

1 个答案:

答案 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)

enter image description here

现在为了完成图形的补充,我在这里假设你的意思是以某种方式补充边缘。因此,由于你有邻接矩阵,你可以使用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)

enter image description here

您可以将图形边缘反转。例如,在初始图表中,node 3的边缘为node 1node 4,而在倒置图中,它具有到其他节点的边,即nodes 2, 5 and 3

**注意:**还有其他方法可以反转numpy数组。使用bitwise_xor没有硬性规定。 Here是一种更简单的方法。