我使用python3的anytree包从列表["abc", "abd", "aec", "add", "adcf"]
创建一个树。在这个树中,每个列表元素的第一个字符-a
是根,随后,其他字符被添加为它们的子元素。当我呈现树时,它看起来像:
a
├── b
│ ├── c
│ └── d
├── e
│ └── c
└── d
├── d
└── c
└── f
但是当我用to_picture
方法把树渲染成图片时,图像是-
我不希望公共节点被合并,因为它会向我的树中添加不需要的路径。
3条答案
按热度按时间ztigrdn81#
节点使用其id排列在
graphviz
中。在您的示例中,图形仅使用节点名称生成,然后graphviz
创建您获得的循环边。您真正想要的是每个节点的不同
id
和与之关联的label
。以下是根据您的阵列执行此操作的方式
这将生成下点文件
下图
ztyzrc3y2#
anytree
to_picture()
函数使用graphviz生成文件。从here = similar question可以读取:
graphviz使用节点id作为标签。如果不同的节点需要有相同的标签,标签必须显式定义。
zdwk9cvp3#
我正准备实施推荐的修复程序,但发现使用UniqueDotExporter可以完美地处理重复的id!