首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在python anytree graphviz输出中反转箭头的方向?

如何在python anytree graphviz输出中反转箭头的方向?
EN

Stack Overflow用户
提问于 2020-04-25 03:50:21
回答 1查看 274关注 0票数 0

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

代码语言:javascript
运行
复制
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]添加到边缘定义行将会得到我想要的结果。通过运行以下代码:

代码语言:javascript
运行
复制
for line in DotExporter(A):
    print(line)

我得到了输出:

代码语言:javascript
运行
复制
digraph tree {
    "A";
    "B";
    "C";
    "A" -> "B";
    "A" -> "C";
}

但是,我如何修改anytree接口的DotExporter输出,以将[dir=back]添加到边缘定义行并反转箭头的方向?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-25 03:56:30

要修改DotExporterDot定义的边属性,需要更改DotExporteredgeattrfunc属性。

代码语言:javascript
运行
复制
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')

查看输出,您现在得到:

代码语言:javascript
运行
复制
for line in DotExporter(A, edgeattrfunc = lambda node, child: "dir=back"):
    print(line)
代码语言:javascript
运行
复制
digraph tree {
    "A";
    "B";
    "C";
    "A" -> "B" [dir=back];
    "A" -> "C" [dir=back];
}

这将生成以下图像。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61416377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档