import networkx as nx
import matplotlib.pyplot as plt
B=nx.Graph()
#添加一个项目101,它有3个参与者:201,202,203
B.add_edge(101,201)
B.add_edge(101,202)
B.add_edge(101,203)
#添加一个项目102,它有2个参与者:203,202,2034
B.add_edge(102,203)
B.add_edge(102,204)
cd=nx.algorithms.bipartite.basic.color(B)#得到节点的颜色字典:{101: 1, 102: 1, 201: 0, 202: 0, 203: 0, 204: 0},项目节点被赋予颜色值1,参与者节点的颜色值是0
nx.draw(B,pos,with_labels=False,node_size=50,node_color=cd.values())
#检测是不是二分图
#a=nx.is_bipartite(B)
#print a
NSet = nx.bipartite.basic.sets(B) #将二分图中的两类节点分别提取出来
Act = nx.project(B,NSet[0]) #向项目节点投影
Actor = nx.project(B,NSet[1]) #向参与者节点投影
print Act.edges() #输出 [(101, 102)]
print Actor.edges() #输出 [(201, 202), (201, 203), (202, 203), (203, 204)]
pos=nx.spring_layout(B) #定义一个布局,此处采用了spring布局方式
plt.show()
-------------------------------
NSet = nx.bipartite.basic.sets(B)这里与闫小勇老师的有所不同。他的原文代码NSet = nx.bipartite_sets(B) 这行,在我的python2.6下运行有错误。
https://wap.sciencenet.cn/blog-790631-622235.html