Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
DataScienceUWL
GitHub Repository: DataScienceUWL/DS775
Path: blob/main/Lessons/Lesson 03 - LP 3/scripts/graph_two_layer.py
871 views
1
# function to show bipartite graph, not important to understand, loaded from graph_two_layer.py
2
3
import networkx as nx
4
import matplotlib.pyplot as plt
5
6
def graph_bipartite(left,right,edges={},labels={}):
7
g = nx.Graph()
8
g.add_nodes_from( left,bipartite=0)
9
g.add_nodes_from(right,bipartite=1)
10
11
if len(edges)>0:
12
edges_new = edges
13
else:
14
edges_new = [(l,r) for l in left for r in right]
15
16
for e in edges_new:
17
g.add_edge(e[0],e[1])
18
19
nleft = len(left)
20
xw = .1
21
eshift_left = .02
22
delta_y = 1/(nleft+1)
23
pos_left = { left[i]:(xw, 1-delta_y * (i+1)) for i in range(nleft) }
24
pos_left_edge = { left[i]:(xw+eshift_left, 1-delta_y * (i+1)) for i in range(nleft) }
25
xw = .1
26
27
nright = len(right)
28
xs = .9
29
eshift_right = .015
30
delta_y = 1/(nright+1)
31
pos_right = { right[i]:(xs, 1-delta_y * (i+1)) for i in range(nright) }
32
pos_right_edge = { right[i]:(xs-eshift_right, 1-delta_y * (i+1)) for i in range(nright) }
33
34
plt.rcParams['figure.figsize'] = [9,9]
35
plt.axis('off')
36
37
nx.draw_networkx_nodes( left, pos_left,nodelist= left,node_color='r',node_size=0,alpha=0.3)
38
nx.draw_networkx_nodes(right,pos_right,nodelist=right,node_color='b',node_size=0,alpha=0.3)
39
40
pos = {}
41
pos.update(pos_left)
42
pos.update(pos_right)
43
44
nx.draw_networkx_labels(g,pos,font_size=10,font_family='sans-serif')
45
46
pos_e = {}
47
pos_e.update(pos_left_edge)
48
pos_e.update(pos_right_edge)
49
50
nx.draw_networkx_edges(g,pos_e,edgelist=edges_new,width=1,alpha=0.4,edge_color='b')
51
52
if len(labels)>0:
53
label_dict = dict(zip(edges_new,labels))
54
nx.draw_networkx_edge_labels(g,pos_e,edge_labels=labels,font_color='red',font_size = 9, label_pos=.85)
55