Пример #1
0
def test_tree2():
    """Tree2."""
    root = Node("root")
    s0 = Node("sub0", parent=root, edge=2)
    Node("sub0B", parent=s0, foo=4, edge=109)
    Node("sub0A", parent=s0, edge="")
    s1 = Node("sub1", parent=root, edge="")
    Node("sub1A", parent=s1, edge=7)
    Node("sub1B", parent=s1, edge=8)
    s1c = Node("sub1C", parent=s1, edge=22)
    Node("sub1Ca", parent=s1c, edge=42)

    def nodenamefunc(node):
        return '%s:%s' % (node.name, node.depth)

    def edgeattrfunc(node, child):
        return 'label="%s:%s"' % (node.name, child.name)

    r = DotExporter(root,
                    options=["rankdir=LR;"],
                    nodenamefunc=nodenamefunc,
                    nodeattrfunc=lambda node: "shape=box",
                    edgeattrfunc=edgeattrfunc)

    r.to_dotfile(join(GENPATH, "tree2.dot"))
    assert cmp(join(GENPATH, "tree2.dot"), join(REFPATH, "tree2.dot"))
Пример #2
0
def render_tree(opts, tree):
    """Render tree in ASCII and graphviz"""
    with codecs.open(
            f"{opts.output_dir}/{constants.FEATURE_IMPORTANCE_HIERARCHY}.txt",
            "w",
            encoding="utf8") as txt_file:
        for pre, _, node in anytree.RenderTree(tree):
            txt_file.write("%s%s: %s (%s: %s)\n" %
                           (pre, node.name, node.description.title(),
                            opts.effect_name, str(node.effect_size)))
    graph_options = [
    ]  # Example: graph_options = ["dpi=300.0;", "style=filled;", "bgcolor=yellow;"]
    exporter = DotExporter(tree,
                           options=graph_options,
                           nodeattrfunc=lambda node: nodeattrfunc(opts, node))
    exporter.to_dotfile(
        f"{opts.output_dir}/{constants.FEATURE_IMPORTANCE_HIERARCHY}.dot")
    try:
        output_filename = f"{opts.output_dir}/{constants.FEATURE_IMPORTANCE_HIERARCHY}.png"
        exporter.to_picture(output_filename)
        print(f"Feature importance visualization: {output_filename}")
    except FileNotFoundError:
        print(
            "Feature importance visualization: error during tree rendering. Is Graphviz installed on your system?"
        )
Пример #3
0
    def export(self, full=False):
        """
        Export tree into graphviz format in both *.dot file and image *.png file

        Parameters
        ----------
        full: boolean value, if True also the regex mappings are printed in the resulting file
        """
        def nodeattr_fn(node):
            return f'style=filled color={COLOR_SCHEME[node.depth]}'

        def nodename_fn(node):
            nl = "\n"
            name = node.name
            if hasattr(node, "regex"):
                name = f"""
{node.name}
-----------
{nl.join(node.regex)}
"""
            return name

        root = self.nodes[self.root_key]
        dot = DotExporter(
            root,
            nodenamefunc=nodename_fn if full else None,
            nodeattrfunc=nodeattr_fn,
            options=[
                'graph [layout = dot, ranksep="1.5", nodesep="0.7"]',
                'rankdir ="LR"',
                'node [fontname="Arial"]'
            ]
        )
        dot.to_dotfile(f"./{self.root_key}.dot")
        dot.to_picture(f"./{self.root_key}.png")
Пример #4
0
def print_node(node):
    node.update_parent()
    root = AnyTreeVisitor().visit(node)

    for pre, fill, node in RenderTree(root):
        print('%s%s' % (pre, node.name))

    # export graphviz files
    exporter = DotExporter(root)
    exporter.to_dotfile('graphviz.dot')
    exporter.to_picture('graphviz.png')
Пример #5
0
def print_node(node):
    node.update_parent()
    root = AnyTreeVisitor().visit(node)

    for pre, fill, node in RenderTree(root):
        print('%s%s' % (pre, node.name))

    # export graphviz files
    exporter = DotExporter(root)
    exporter.to_dotfile('graphviz.dot')
    exporter.to_picture('graphviz.png')