假设要绘制这样的二部图
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)