在 Pyecharts 中,树图是一类图表,它主要包括 2 种:① 树图;② 矩形树图,如下图所示。在实际开发中,大多数情况下我们只会用到树图这一种,所以这一节重点介绍一下树图是如何使用的。


Pyecharts 树图语法
在 Pyecharts 中,我们可以使用 Tree 这个模块来绘制一个树图。树图适用于展示树型的结构,比如公司结构、项目结构等。
语法:
tree = Tree()
tree.add(series_name, data)
说明:
对于树图来说,它也是使用 add() 方法。参数 series_name 用于定义系列名,参数 data_pair 用于定义数据部分。
示例 1:Pyecharts 绘制树图
from pyecharts.charts import Tree
# 数据
data = [{
'name': 'A',
'children': [
{'name': 'B'},
{
'name': 'C',
'children': [
{'name': 'E'},
{'name': 'F'}
]
},
{
'name': 'D',
'children': [
{'name': 'G'},
{'name': 'H'}
]
}
]
}]
# 绘图
tree = Tree()
tree.add(series_name='', data=data)
# 渲染
tree.render()
运行生成的 render.html,浏览器效果如下图所示。

分析:
树图的绘制非常简单,不过我们需要注意一下 data 的格式。树图的每一个节点由 2 部分组成:name 和 children。name 用于定义当前节点的名字,如果该节点有子节点,就需要使用 children 来定义。如果该节点没有子节点,就不需要使用 children。
对于树图来说,我们点击某一个节点,如果该节点有子子节点,那么就会把子节点隐藏起来。比如当我们点击节点 D 之后,此时效果如下图所示。隐藏之后,再次点击该节点,就会显示完整的节点出来了。

Pyecharts 树图样式
在 Pyecharts 中,对于树图的自定义样式,主要包括 2 个方面:① 改变方向;② 标签设置。
1. 改变方向
在 Pyecharts 中,我们可以使用 add() 方法的 orient 参数来定义树图的方向。其中,orient 参数常用取值如下表所示。
| 取值 | 说明 |
|---|---|
| LR(默认值) | 从左到右,即 “Left to Right” |
| RL | 从右到左,即 “Right to Left” |
| BT | 从下到上,即 “Bottom to Top” |
| TB | 从上到下,即 “Top to Bottom” |
示例 2:从上到下
from pyecharts.charts import Tree
# 数据
data = [{
'name': '总公司',
'children': [
{'name': '分公司A'},
{
'name': '分公司B',
'children': [
{'name': '部门A'},
{'name': '部门B'}
]
},
{
'name': '分公司C',
'children': [
{'name': '部门A'},
{'name': '部门B'}
]
}
]
}]
# 绘图
tree = Tree()
tree.add(series_name='', data=data, orient='TB')
# 渲染
tree.render()
运行生成的 render.html,浏览器效果如下图所示。

分析:
orient='TB' 表示设置树图的方向为 “从上到下”,小伙伴们可以自行试一下其他值,然后看看效果是怎么样的。
2. 标签设置
在 Pyecharts 中,我们还可以使用 set_series_opts() 方法结合 label_opts 参数来定义标签的样式。
示例 3:设置标签
from pyecharts.charts import Tree
from pyecharts import options as opts
# 数据
data = [{
'name': '总公司',
'children': [
{'name': '分公司A'},
{
'name': '分公司B',
'children': [
{'name': '部门A'},
{'name': '部门B'}
]
},
{
'name': '分公司C',
'children': [
{'name': '部门A'},
{'name': '部门B'}
]
}
]
}]
# 绘图
tree = Tree()
tree.add(
series_name='',
data=data,
orient='TB',
label_opts=opts.LabelOpts(
position='top',
horizontal_align='right',
vertical_align='middle',
rotate=-90,
font_size=14,
color='red'
)
)
# 渲染
tree.render()
运行生成的 render.html,浏览器效果如下图所示。

分析:
当树图分支非常多时,我们还需要调整一下标签文本的位置、颜色等,此时可以使用之前介绍的 label_opts 参数来进行设置。
