in clutrr/relations/puzzle.py [0:0]
def display(self):
"""
Display the puzzle in a network diagram
:return:
"""
G = nx.MultiDiGraph()
fs = self.get_full_story()
names = {}
rels = {}
forward_edges = []
backward_edges = []
gendered_nodes = {'male':[], 'female':[]}
for edge in fs:
G.add_node(edge[0])
G.add_node(edge[1])
gendered_nodes[self.anc.family_data[edge[0]].gender].append(edge[0])
gendered_nodes[self.anc.family_data[edge[1]].gender].append(edge[1])
names[edge[0]] = self.anc.family_data[edge[0]].name
names[edge[1]] = self.anc.family_data[edge[1]].name
G.add_edge(edge[0], edge[1])
forward_edges.append(edge)
rels[edge] = self.get_edge_relation(edge)
G.add_edge(edge[1], edge[0])
backward_edges.append(edge)
rels[(edge[1], edge[0])] = self.get_edge_relation((edge[1], edge[0]))
pos = nx.layout.random_layout(G)
nx.draw_networkx_nodes(G, pos, nodelist=gendered_nodes['male'], node_color='b', node_size=100, alpha=0.8)
nx.draw_networkx_nodes(G, pos, nodelist=gendered_nodes['female'], node_color='r', node_size=100, alpha=0.8)
nx.draw_networkx_labels(G, pos, names)
nx.draw_networkx_edges(G, pos, edgelist=forward_edges, arrowstyle='-', edge_color='r')
nx.draw_networkx_edges(G, pos, edgelist=backward_edges, arrowstyle='-', edge_color='b')
edge_labels = nx.draw_networkx_edge_labels(G, pos, rels)
ax = plt.gca()
ax.set_axis_off()
plt.show()