def create_plot(tree, name="tree"): fig = plt.figure(1, facecolor="white") fig.clf() create_plot.ax1 = plt.subplot(111, frameon=False, xticks=[], yticks=[]) plot_tree.total_w = float(get_leafs_number(tree)) plot_tree.total_d = float(get_tree_depth(tree)) plot_tree.x_off = -0.5 / plot_tree.total_w plot_tree.y_off = 1.0 plot_tree(tree, (0.5, 1.0), "") fig.savefig(data_out_path("decision_tree/{}.png").format(name))
def plot_tree(tree, parent_plot, node_text): num_leafs = get_leafs_number(tree) label = tree.keys()[0] center_plot = (plot_tree.x_off + (1.0 + num_leafs) / 2.0 / plot_tree.total_w, plot_tree.y_off) plot_mid_text(center_plot, parent_plot, node_text) plot_node(label, center_plot, parent_plot, decision_node) plot_tree.y_off = plot_tree.y_off - 1.0 / plot_tree.total_d for value, node in tree[label].iteritems(): if isinstance(node, dict): plot_tree(node, center_plot, unicode(value)) else: plot_tree.x_off = plot_tree.x_off + 1.0 / plot_tree.total_w plot_node(node, (plot_tree.x_off, plot_tree.y_off), center_plot, leaf_node) plot_mid_text((plot_tree.x_off, plot_tree.y_off), center_plot, unicode(value)) plot_tree.y_off = plot_tree.y_off + 1.0 / plot_tree.total_d