当前位置: 首页 > news >正文

使用 Pyecharts 绘制精美饼状图:从基础到高级技巧

一、Pyecharts 简介

Pyecharts 是一个基于 ECharts 的 Python 数据可视化库,它能够帮助用户轻松创建各种交互式图表。作为 ECharts 的 Python 接口,Pyecharts 继承了 ECharts 强大的可视化能力,同时提供了 Python 友好的 API 设计,使得数据科学家和分析师能够快速构建专业级的数据可视化作品。

Pyecharts 的核心优势在于:

  1. 丰富的图表类型:支持超过 30 种常见图表类型,包括折线图、柱状图、饼图、散点图、地图等

  2. 高度可定制化:几乎每个图表元素都可以自定义,从颜色、字体到交互行为

  3. 交互式体验:原生支持缩放、拖拽、悬停提示等交互功能

  4. 多种输出格式:可输出为 HTML、图片或 Jupyter Notebook 内嵌展示

  5. 简洁的 API:采用链式调用设计,代码直观易读

饼状图是数据可视化中展示比例关系的经典图表。本文将基于 Pyecharts 展示多种饼状图的绘制方法,包括基础饼图、南丁格尔玫瑰图等高级形式,并提供完整的代码示例和效果展示。

基础饼状图

展示高中同学职业分布的比例关系:

from pyecharts import options as opts
from pyecharts.charts import Piecategories = ['程序员','教师','医生','护士','警察','老板','律师','翻译','运动员']
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()

效果特点

  • 清晰展示各职业占比

  • 悬浮显示具体数值

  • 交互式图例开关


调整图例位置

当图例项较多时,优化图例位置可提升可读性:

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)

自定义颜色方案

为不同职业分配特定颜色:

custom_colors = ["#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd", "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22"]pie = (Pie().add('职业占比', list(zip(categories, values))).set_colors(custom_colors)  # 应用自定义颜色
)

 


南丁格尔玫瑰图

用半径长度反映数值大小的玫瑰图:

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:所有扇形角度相同,仅半径不同


滚动图例

当分类过多时使用滚动图例:

pie = (Pie().add('职业占比', list(zip(categories, values))).set_global_opts(legend_opts=opts.LegendOpts(type_="scroll",      # 滚动模式pos_left="80%",      # 右侧放置orient="vertical"    # 垂直方向))
)

双玫瑰图对比

在同一画布展示两种玫瑰图类型:

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")        # 面积模式
)

对比效果

  • 左图:半径+角度双重编码

  • 右图:仅半径编码数据


完整代码示例

所有示例已集成在 Jupyter Notebook 中,包含以下高级功能:

  1. 动态涟漪效果

  2. 百分比标签显示

  3. 环形图制作

  4. 多层饼图实现

通过 Pyecharts 的强大功能,我们可以轻松创建具有专业水准的数据可视化图表,有效展示各类别间的比例关系。


三、给读者的学习建议

1. 学习路径规划

对于 Pyecharts 的学习,建议按照以下路径循序渐进:

初级阶段(1-2周)

  • 掌握基础图表(柱状图、折线图、饼图)的绘制

  • 了解全局配置项和系列配置项的区别

  • 熟悉常见样式设置(颜色、标题、图例等)

中级阶段(2-4周)

  • 学习组合图表(如折线+柱状图)的绘制

  • 掌握地图和地理坐标系的用法

  • 了解数据预处理与 Pyecharts 的结合

高级阶段(1个月以上)

  • 研究自定义主题和扩展组件

  • 学习与 Web 框架(如 Flask、Django)的集成

  • 探索大数据量下的性能优化

http://www.lryc.cn/news/593935.html

相关文章:

  • nginx定期清理日志
  • Node.js:函数、路由、全局对象
  • 数据并表技术全面指南:从基础JOIN到分布式数据融合
  • 分布式文件系统04-DataNode海量数据分布式高可靠存储
  • ZooKeeper学习专栏(一):分布式协调的核心基石
  • 【橘子分布式】gRPC(编程篇-下)
  • C++STL系列之list
  • ABP VNext + Grafana Loki:集中式日志聚合
  • 【Django】DRF API版本和解析器
  • Kubernetes (K8S)知识详解
  • 基于bert-lstm对微博评论的情感分析系统设计与实现
  • JVM-Java
  • Web服务压力测试工具hey学习一:使用方法
  • Django ORM系统
  • PyQt5—QColorDialog 学习笔记
  • 7-20 关于mysql
  • 【企业架构】TOGAF概念之一
  • 基于SHAP的特征重要性排序与分布式影响力可视化分析
  • Shell脚本-cut工具
  • 零基础学习性能测试第一章-理解程序运行原理,需要什么资源
  • 第十四届全国大学生数学竞赛初赛试题(非数学专业类)
  • CSS 单位完全指南:掌握 em、rem、vh、vw 等响应式布局核心单位
  • gradle微服务依赖模版
  • PHPStorm携手ThinkPHP8:开启高效开发之旅
  • 用 Jetpack Compose 写 Android 的 “Hello World”
  • RCE随笔(1)
  • RK3588 安卓adb操作
  • C++ - 仿 RabbitMQ 实现消息队列--服务端核心模块实现(一)
  • RK3588 编译 Android 13 镜像方法
  • 状态管理与团队协作 - SRE 的核心关切