NetworkX:折线图及其补充
NetworkX: Line graph and complement of it
我必须生成并绘制一个折线图,并补充从 .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 没有硬性规定。 Here 是一种更简单的方法。
我必须生成并绘制一个折线图,并补充从 .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 没有硬性规定。 Here 是一种更简单的方法。