0

我正在构建树,这些树旨在表示使用 python 中的 anytree 包从叶子到树根的流。我有以下代码。

from anytree import Node
from anytree.exporter import DotExporter
A = Node('A')
B = Node('B', parent = A)
C = Node('C', parent = A)
DotExporter(A).to_picture('example.png')

它会产生以下图像。

在此处输入图像描述

我想修改这个图像,使箭头指向相反的方向。我知道在 graphviz 中添加[dir=back]到边缘定义线会给我想要的结果。通过运行以下代码:

for line in DotExporter(A):
    print(line)

我得到输出:

digraph tree {
    "A";
    "B";
    "C";
    "A" -> "B";
    "A" -> "C";
}

但是如何修改DotExporteranytree界面的输出以添加[dir=back]到边缘定义线并反转箭头的方向?

4

1 回答 1

0

要修改由 定义的边缘属性DotDotExporter您需要更改 的edgeattrfunc属性DotExporter

from anytree import Node
from anytree.exporter import DotExporter
A = Node('A')
B = Node('B', parent = A)
C = Node('C', parent = A)
DotExporter(A, edgeattrfunc = lambda node, child: "dir=back").to_picture('example.png')

查看输出,您现在得到:

for line in DotExporter(A, edgeattrfunc = lambda node, child: "dir=back"):
    print(line)
digraph tree {
    "A";
    "B";
    "C";
    "A" -> "B" [dir=back];
    "A" -> "C" [dir=back];
}

这会产生以下图像。

在此处输入图像描述

于 2020-04-24T19:56:29.657 回答