【发布时间】:2014-07-18 15:49:26
【问题描述】:
我有一个二分图的 n1×n2 双邻接矩阵 A。矩阵 A 是一个 scipy.sparse csc 矩阵。我想在networkx中使用A来绘制二分图。假设节点根据其名为 node_class 的类标签着色。我可以做到以下几点:
import networkx as nx
G = nx.from_numpy_matrix(A)
graph_pos = nx.fruchterman_reingold_layout(G)
degree = nx.degree(G)
nx.draw(G, node_color = node_class, with_labels = False, node_size = [v * 35 for v in degree.values()])
上面的代码适用于正方形密集邻接矩阵。但是对于非方形双邻接矩阵 A 则不然。错误是:
'Adjacency matrix is not square.'
此外,我拥有的矩阵 A 是一个 scipy.sparse 矩阵,因为它非常大并且有很多零。因此,我想通过堆叠 A 并添加零来避免创建 (n1+n2)-by-(n1+n2) 邻接矩阵。
我查看了 NetworkX 的二分图文档,它没有提到如何使用双邻接矩阵绘制双分图,或使用双邻接稀疏矩阵创建图。如果有人能告诉我如何绘制二分图,那就太好了!
【问题讨论】:
标签: python matrix graph networkx