我需要一种在python中可视化嵌套函数调用的方法,最好是在树状结构中。因此,如果我有一个包含f(g(x,h(y)))
的字符串,我想创建一个树,使这些级别更具可读性。例如:
f()
|
g()
/ \
x h()
|
y
或者,当然,更好的是,像sklearn.tree.plot_tree
创建的树图
这似乎是一个很早以前就有人解决过的问题,但到目前为止,我一直无法找到它。仅供参考,这是用于可视化遗传编程输出的,这些输出往往具有非常复杂的字符串
谢谢
更新: toytree和toyplot离得很近,但不是很近:
这是通过以下方式生成的:
import toytree, toyplot
mystyle = {"layout": 'down','node_labels':True}
s = '((x,(y)));'
toytree.tree(s).draw(**mystyle);
很接近,但节点标签不是字符串
更新2: 我找到了另一个可能的解决方案,它可以让我更接近文本形式: https://rosettacode.org/wiki/Visualize_a_tree#Python
tree2 = Node('f')([
Node('g')([
Node('x')([]),
Node('h')([
Node('y')([])
])
])
])
print('\n\n'.join([drawTree2(True)(False)(tree2)]))
其结果如下:
没错,但我必须手动将字符串转换为drawTree2
函数所需的节点表示法
这里有一个使用pyparsing和ascitree的解决方案。这可以用于解析任何内容,并生成绘图所需的任何数据结构。在这种情况下,代码会生成适合输入到asciitree的嵌套字典
输出:
编辑
通过一些调整,您可以构建一个适合在您喜爱的图形库(下面的IGRAPHE示例)中打印的边列表
相关问题 更多 >
编程相关推荐