Edges are only allowed across different sets and are not allowed within nodes belonging
to the same set. In most cases, nodes belonging to different sets are also characterized by
particular node types.
from networkx.drawing.layout import bipartite_layout
user = ['A', 'B', 'C', 'D', 'E']
item = [1, 2, 3, 4, 5]
E = zip(np.random.choice(user, 10), np.random.choice(item, 10))
Edge = pd.DataFrame([{"source":user, "target":item} for user, item in E])
G.add_nodes_from(user, bipartite=0)
G.add_nodes_from(item, bipartite=1)
G.add_edges_from(tuple(x) for x in Edge.values)
plt.figure(figsize=(10, 10))
nx.draw_networkx(G, pos, node_size= 1700, edge_color='g', node_color='r', arrowsize=32, font_size=14, with_labels=True)
plt.show()