Pyecharts 是一个基于 ECharts 的 Python 数据可视化库,它能够帮助用户轻松创建各种交互式图表。作为 ECharts 的 Python 接口,Pyecharts 继承了 ECharts 强大的可视化能力,同时提供了 Python 友好的 API 设计,使得数据科学家和分析师能够快速构建专业级的数据可视化作品。
Pyecharts 的核心优势在于:
饼状图是数据可视化中展示比例关系的经典图表。本文将基于 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%") # 图例左移 ) ) |
关键参数:
为不同职业分配特定颜色:
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)) ) |
玫瑰图模式说明:
当分类过多时使用滚动图例:
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") # 面积模式 ) |
对比效果:
对于 Pyecharts 的学习,建议按照以下路径循序渐进:
初级阶段(1-2周):
中级阶段(2-4周):
高级阶段(1个月以上):