Path: blob/main/Lessons/Lesson 03 - LP 3/scripts/graph_two_layer.py
871 views
# function to show bipartite graph, not important to understand, loaded from graph_two_layer.py12import networkx as nx3import matplotlib.pyplot as plt45def graph_bipartite(left,right,edges={},labels={}):6g = nx.Graph()7g.add_nodes_from( left,bipartite=0)8g.add_nodes_from(right,bipartite=1)910if len(edges)>0:11edges_new = edges12else:13edges_new = [(l,r) for l in left for r in right]1415for e in edges_new:16g.add_edge(e[0],e[1])1718nleft = len(left)19xw = .120eshift_left = .0221delta_y = 1/(nleft+1)22pos_left = { left[i]:(xw, 1-delta_y * (i+1)) for i in range(nleft) }23pos_left_edge = { left[i]:(xw+eshift_left, 1-delta_y * (i+1)) for i in range(nleft) }24xw = .12526nright = len(right)27xs = .928eshift_right = .01529delta_y = 1/(nright+1)30pos_right = { right[i]:(xs, 1-delta_y * (i+1)) for i in range(nright) }31pos_right_edge = { right[i]:(xs-eshift_right, 1-delta_y * (i+1)) for i in range(nright) }3233plt.rcParams['figure.figsize'] = [9,9]34plt.axis('off')3536nx.draw_networkx_nodes( left, pos_left,nodelist= left,node_color='r',node_size=0,alpha=0.3)37nx.draw_networkx_nodes(right,pos_right,nodelist=right,node_color='b',node_size=0,alpha=0.3)3839pos = {}40pos.update(pos_left)41pos.update(pos_right)4243nx.draw_networkx_labels(g,pos,font_size=10,font_family='sans-serif')4445pos_e = {}46pos_e.update(pos_left_edge)47pos_e.update(pos_right_edge)4849nx.draw_networkx_edges(g,pos_e,edgelist=edges_new,width=1,alpha=0.4,edge_color='b')5051if len(labels)>0:52label_dict = dict(zip(edges_new,labels))53nx.draw_networkx_edge_labels(g,pos_e,edge_labels=labels,font_color='red',font_size = 9, label_pos=.85)5455