def display()

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()