使用Python实现树形图和树状结构
实现树形图和树状结构有多种方法,这里介绍两种较为简单的方法。
方法一:使用python模块anytree
实现树形图和树状结构。
安装anytree模块:
pip install anytree
anytree模块使用示例:
from anytree import Node, RenderTree # 创建树状结构 root = Node("pidancode.com") dir1 = Node("dir1", parent=root) dir2 = Node("dir2", parent=root) file1 = Node("file1", parent=dir1) file2 = Node("file2", parent=dir1) file3 = Node("file3", parent=dir2) # 打印树形图 for pre, fill, node in RenderTree(root): print("%s%s" % (pre, node.name))
输出结果:
pidancode.com ├── dir1 │ ├── file1 │ └── file2 └── dir2 └── file3
说明:使用Node函数创建节点,parent参数指定父节点。RenderTree函数可将树形结构打印出来。
方法二:使用python内置库graphviz
实现树形图和树状结构。
安装graphviz工具和相关python模块:
sudo apt-get install graphviz pip install graphviz
使用graphviz模块实现树形图:
from graphviz import Digraph # 创建树状结构 dot = Digraph(comment='pidancode.com') # 创建图形对象 dot.node('dir1') dot.node('dir2') dot.edge('pidancode.com', 'dir1') dot.edge('pidancode.com', 'dir2') dot.node('file1') dot.node('file2') dot.node('file3') dot.edge('dir1', 'file1') dot.edge('dir1', 'file2') dot.edge('dir2', 'file3') # 生成图形 dot.render('pidancode_tree', view=True)
生成的图形为:
说明:使用Digraph函数创建图形对象,node函数创建节点,edge函数创建边。render函数将对象保存为图片,view参数为True表示生成图片后自动打开,否则需要手动打开。
使用graphviz模块实现树状结构:
from graphviz import Graph # 创建树状结构 dot = Graph(comment='pidancode.com', format='svg') dot.node('pidancode.com') dot.node('dir1') dot.node('dir2') dot.node('file1') dot.node('file2') dot.node('file3') dot.edge('pidancode.com', 'dir1') dot.edge('pidancode.com', 'dir2') dot.edge('dir1', 'file1') dot.edge('dir1', 'file2') dot.edge('dir2', 'file3') # 生成图形 dot.render('pidancode_tree2', view=True)
生成的图形为:
说明:区别在于创建图形对象时指定了format参数为svg,即生成的是树形结构,而非图。其他步骤与树形图相同。
相关文章