networkx 笔记:绘制二部图

该文介绍了如何使用Python的NetworkX库创建并绘制二部图。首先,通过邻接矩阵准备数据,然后构建图并添加节点,接着根据矩阵添加边。在绘制过程中,设置了节点颜色和标签,并尝试调整节点位置以期望得到理想的二部图布局,但最终结果可能未达到预期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假设要绘制这样的二部图

1 准备数据

ada_matrix=[[0,1,0,1],
           [0,1,0,0],
           [1,0,1,0],
           [0,0,0,1]]
#B和G的邻接矩阵

2 搭建图

import networkx as nx
G=nx.Graph()

left_lst=['B1','B2','B3','B4']
right_lst=['G1','G2','G3','G4']
#左和右各4个点

G.add_nodes_from(left_lst)#,bipartite=0)
G.add_nodes_from(right_lst)#,bipartite=1)
#有教程这里加了一个bipartite的设置,但我觉得没有好像也行?

num_l,num_c=len(ada_matrix),len(ada_matrix[0])

for i in range(num_l):
    for j in range(num_c):
        if(ada_matrix[i][j]):
            G.add_edge(left_lst[i],right_lst[j])
#根据邻接矩阵添加边

3 绘制图

labels_set={}
comb_lst=left_lst+right_lst
for i in range(len(comb_lst)):
    labels_set[comb_lst[i]]=comb_lst[i]
labels_set
#设置每个点对应的label字典

color_lst=['r','r','r','r','green','green','green','green']
#设置每个点对应的颜色列表


nx.draw(G,labels=labels_set,
        node_color=)

但出来的图不是我们想象中的二部图

4 添加位置属性

pos_dict={}
num_left=0
num_right=0
for i in G.nodes:
    if(i[0]=='B'):
        pos_dict[i]=(1,num_left)
        num_left+=1
    else:
        pos_dict[i]=(2,num_right)
        num_right+=1

#设置位置字典

nx.draw(G,labels=labels_set,pos=pos_dict,node_color=color_lst)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值