Pyecharts 简介
Pyecharts 是一个基于 ECharts 的 Python 数据可视化库,它能够帮助用户轻松创建各种交互式图表。作为 ECharts 的 Python 接口,Pyecharts 继承了 ECharts 强大的可视化能力,同时提供了 Python 友好的 API 设计,使得数据科学家和分析师能够快速构建专业级的数据可视化作品。
Pyecharts 的核心优势在于:
- 丰富的图表类型:支持超过 30 种常见图表类型,包括折线图、柱状图、饼图、散点图、地图等
- 高度可定制化:几乎每个图表元素都可以自定义,从颜色、字体到交互行为
- 交互式体验:原生支持缩放、拖拽、悬停提示等交互功能
- 多种输出格式:可输出为 HTML、图片或 Jupyter Notebook 内嵌展示
- 简洁的 API:采用链式调用设计,代码直观易读
饼状图是数据可视化中展示比例关系的经典图表。本文将基于 Pyecharts 展示多种饼状图的绘制方法,包括基础饼图、南丁格尔玫瑰图等高级形式,并提供完整的代码示例和效果展示。
基础饼状图
展示高中同学职业分布的比例关系:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
from pyecharts import options as opts
from pyecharts.charts import Pie
categories = ['程序员','教师','医生','护士','警察','老板','律师','翻译','运动员']
values = [18, 5, 3, 4, 8, 2, 2, 5, 1]
pie = (
Pie()
.add('高中同学职业占比', list(zip(categories, values)))
.set_global_opts(title_opts=opts.TitleOpts(title="职业分布"))
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
)
pie.render_notebook()
|
效果特点:
- 清晰展示各职业占比
- 悬浮显示具体数值
- 交互式图例开关
调整图例位置
当图例项较多时,优化图例位置可提升可读性:
1
2
3
4
5
6
7
8
|
pie = (
Pie()
.add('职业占比', list(zip(categories, values)))
.set_global_opts(
title_opts=opts.TitleOpts(title="优化图例位置"),
legend_opts=opts.LegendOpts(pos_left="25%") # 图例左移
)
)
|
关键参数:
- pos_left/pos_right:控制水平位置
- pos_top/pos_bottom:控制垂直位置
- orient:图例方向(horizontal/vertical)
自定义颜色方案
为不同职业分配特定颜色:
1
2
3
4
5
6
7
8
|
custom_colors = ["#1f77b4", "#ff7f0e", "#2ca02c", "#d62728",
"#9467bd", "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22"]
pie = (
Pie()
.add('职业占比', list(zip(categories, values)))
.set_colors(custom_colors) # 应用自定义颜色
)
|
南丁格尔玫瑰图
用半径长度反映数值大小的玫瑰图:
1
2
3
4
5
6
7
8
9
10
11
|
pie = (
Pie()
.add(
series_name='职业占比',
data_pair=list(zip(categories, values)),
rosetype="radius", # 半径模式
radius="85%", # 图表大小
label_opts=opts.LabelOpts(is_show=False)
)
.set_global_opts(legend_opts=opts.LegendOpts(is_show=False))
)
|
玫瑰图模式说明:
- radius:半径反映数值大小
- area:所有扇形角度相同,仅半径不同
滚动图例
当分类过多时使用滚动图例:
1
2
3
4
5
6
7
8
9
10
11
|
pie = (
Pie()
.add('职业占比', list(zip(categories, values)))
.set_global_opts(
legend_opts=opts.LegendOpts(
type_="scroll", # 滚动模式
pos_left="80%", # 右侧放置
orient="vertical" # 垂直方向
)
)
)
|
双玫瑰图对比
在同一画布展示两种玫瑰图类型:
1
2
3
4
5
6
7
8
9
10
11
|
pie = (
Pie()
.add("", list(zip(categories, values)),
radius=["30%", "75%"],
center=["25%", "50%"], # 左侧图表
rosetype="radius") # 半径模式
.add("", list(zip(categories, values)),
radius=["30%", "75%"],
center=["75%", "50%"], # 右侧图表
rosetype="area") # 面积模式
)
|
对比效果:
给读者的学习建议
1. 学习路径规划
对于 Pyecharts 的学习,建议按照以下路径循序渐进:
初级阶段(1-2周):
- 掌握基础图表(柱状图、折线图、饼图)的绘制
- 了解全局配置项和系列配置项的区别
- 熟悉常见样式设置(颜色、标题、图例等)
中级阶段(2-4周):
- 学习组合图表(如折线+柱状图)的绘制
- 掌握地图和地理坐标系的用法
- 了解数据预处理与 Pyecharts 的结合
高级阶段(1个月以上):
- 研究自定义主题和扩展组件
- 学习与 Web 框架(如 Flask、Django)的集成
- 探索大数据量下的性能优化
|