我有一个二部图的n1行n2列的双重邻接矩阵A,矩阵A是一个scipy.sparse csc矩阵。我想使用A在networkx中绘制这个二部图。假设节点按照它们的类别标签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关于二分图的文档,它没有提到如何使用双向邻接矩阵绘制二分图或创建一个使用双向稀疏矩阵的图。如果有人能告诉我如何绘制二分图,那就太好了!