def draw(self, directed=True, layout="<STR_LIT>",<EOL>node_label_attr=None, show_node_labels=True,<EOL>edge_label_attr=None, show_edge_labels=True,<EOL>node_size=<NUM_LIT>, node_color='<STR_LIT>', node_alpha=<NUM_LIT>,<EOL>node_text_size=<NUM_LIT:12>,<EOL>edge_color='<STR_LIT>', edge_alpha=<NUM_LIT>, edge_tickness=<NUM_LIT:1>,<EOL>edge_text_pos=<NUM_LIT>,<EOL>text_font='<STR_LIT>', ax=None):
graph = self.get_graph(directed=directed)<EOL>pos = getattr(nx, "<STR_LIT>".format(layout))(graph)<EOL>node_labels = {}<EOL>edge_labels = {}<EOL>node_colors = set()<EOL>if show_node_labels:<EOL><INDENT>for node, props in graph.nodes(data=True):<EOL><INDENT>labels = props.pop('<STR_LIT>', [])<EOL>for label in labels:<EOL><INDENT>node_colors.add(label)<EOL><DEDENT>if node_label_attr is None:<EOL><INDENT>node_labels[node] = "<STR_LIT>".format(<EOL>"<STR_LIT::>".join(labels),<EOL>next(iter(props.values())) if props else "<STR_LIT>",<EOL>)<EOL><DEDENT>else:<EOL><INDENT>props_list = ["<STR_LIT>".format(k, v)<EOL>for k, v in props.items()]<EOL>node_labels[node] = "<STR_LIT>".format(<EOL>"<STR_LIT::>".join(labels), "<STR_LIT:\n>".join(props_list)<EOL>)<EOL><DEDENT><DEDENT><DEDENT>node_color = []<EOL>node_colors = list(node_colors)<EOL>legend_colors = []<EOL>colors = list(plt.matplotlib.colors.ColorConverter().cache.items())[<NUM_LIT:2>:]<EOL>for _, color_rgb in colors[:len(node_colors)]:<EOL><INDENT>node_color.append(color_rgb)<EOL>legend_colors.append(color_rgb)<EOL><DEDENT>if show_edge_labels:<EOL><INDENT>for start, end, props in graph.edges(data=True):<EOL><INDENT>if edge_label_attr is None:<EOL><INDENT>edge_label = props.get("<STR_LIT:type>", '<STR_LIT>')<EOL><DEDENT>else:<EOL><INDENT>edge_label = props.get(edge_label_attr, '<STR_LIT>')<EOL><DEDENT>edge_labels[(start, end)] = edge_label<EOL><DEDENT><DEDENT>if not ax:<EOL><INDENT>fig = plt.figure()<EOL>ax = fig.add_subplot(<NUM_LIT>)<EOL><DEDENT>nodes = nx.draw_networkx_nodes(<EOL>graph, pos=pos, node_color=node_color,<EOL>node_size=node_size, alpha=node_alpha,<EOL>ax=ax<EOL>)<EOL>nx.draw_networkx_labels(<EOL>graph, pos=pos, labels=node_labels,<EOL>font_size=node_text_size,<EOL>font_family=text_font,<EOL>ax=ax<EOL>)<EOL>nx.draw_networkx_edges(<EOL>graph, pos=pos, width=edge_tickness,<EOL>alpha=edge_alpha, edge_color=edge_color,<EOL>ax=ax<EOL>)<EOL>nx.draw_networkx_edge_labels(<EOL>graph, pos=pos, edge_labels=edge_labels,<EOL>ax=ax<EOL>)<EOL>ax.legend([plt.Line2D([<NUM_LIT:0>], [<NUM_LIT:0>], linestyle="<STR_LIT:none>", marker="<STR_LIT:o>",<EOL>alpha=node_alpha,<EOL>markersize=<NUM_LIT:10>, markerfacecolor=color)<EOL>for color in legend_colors],<EOL>node_colors, loc=(-<NUM_LIT>, <NUM_LIT:1>), numpoints=<NUM_LIT:1>, frameon=False)<EOL>ax.set_axis_off()<EOL>return graph, ax, nodes<EOL>
Plot of a NetworkX multi-graph instance

        :param directed: boolean, optional (default=`True`).
            Whether to return a directed graph or not.
        :param layout: string, optional (default=`"spring"`).
            Layout to apply. Any of the possible NetworkX layouts will work:
            ``'circular_layout'``, ``'random_layout'``, ``'shell_layout'``,
            ``'spring_layout'``, ``'spectral_layout'``,
            or ``'fruchterman_reingold_layout'``.
        :param node_label_attr: string, optional (default=`None`).
            Attribute of the nodes that has to be used as the label.
        :param show_node_labels: boolean, optional (default=`True`).
            Whether to show or not the labels of the nodes.
        :param edge_label_attr: boolean, optional (default=`None`).
            Attribute of the edges that has to be used as the label.
        :param show_edge_labels: . optional (default=`True`).
            Whether to show or not the labels of the edges.
        :param node_size: integer, optional (default=`1600`).
            Desired size for nodes.
        :param node_color: color string, or array of floats, (default=`'blue'`)
            Node color. Can be a single color format string, or a sequence of
            colors with the same length as nodelist. If numeric values are
            specified they will be mapped to colors using the ``cmap`` and
            ``vmin``, ``vmax`` parameters. See ``matplotlib.scatter`` for more
            details.
        :param node_alpha: float, optional (default=`0.3`).
            Between 0 and 1 for transparency of nodes.
        :param node_text_size: integer, optional (default=`12`).
            Size of the node text.
        :param edge_color: color string, or array of floats (default=`'blue'`)
            Edge color. Can be a single color format string, or a sequence of
            colors with the same length as edgelist. If numeric values are
            specified they will be mapped to colors using the ``edge_cmap`` and
            ``edge_vmin``, ``edge_vmax`` parameters.
        :param edge_alpha: float, optional (default=`0.3`)
            Transparency for thee edges.
        :param edge_tickness: float or integer, optional (default=`1`).
            Thickness of the lines drawn for the edges.
        :param edge_text_pos: . Default to optional (d0)=
        :param text_font: . Default to optional (default=`'sans-serif'`).
        :param ax: ``matplotlib.Figure``, optional (default=`None`).
            A ``matplotlib.Figure`` to use when rendering the graph. If `None`,
            a new object is created and returned.----

        :return: a ``matplotlib.Figure`` with the graph rendered.