Python使用Pyecharts绘制精美饼状图的示例代码

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

目录
  • Pyecharts 简介
  • 基础饼状图
    • 调整图例位置
    • 自定义颜色方案
  • 南丁格尔玫瑰图
    • 滚动图例
    • 双玫瑰图对比
  • 给读者的学习建议
    • 1. 学习路径规划

Pyecharts 简介

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

Pyecharts 的核心优势在于:

  • 丰富的图表类型:支持超过 30 种常见图表类型,包括折线图、柱状图、饼图、散点图、地图等
  • 高度可定制化:几乎每个图表元素都可以自定义,从颜色、字体到交互行为
  • 交互式体验:原生支持缩放、拖拽、悬停提示等交互功能
  • 多种输出格式:可输出为 HTML、图片或 Jupyter Notebook 内嵌展示
  • 简洁的 API:采用链式调用设计,代码直观易读

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

基础饼状图

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

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()

效果特点

  • 清晰展示各职业占比
  • 悬浮显示具体数值
  • 交互式图例开关

调整图例位置

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

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

对比效果

  • 左图:半径+角度双重编码
  • 右图:仅半径编码数据

给读者的学习建议

1. 学习路径规划

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

初级阶段(1-2周)

  • 掌握基础图表(柱状图、折线图、饼图)的绘制
  • 了解全局配置项和系列配置项的区别
  • 熟悉常见样式设置(颜色、标题、图例等)

中级阶段(2-4周)

  • 学习组合图表(如折线+柱状图)的绘制
  • 掌握地图和地理坐标系的用法
  • 了解数据预处理与 Pyecharts 的结合

高级阶段(1个月以上)

  • 研究自定义主题和扩展组件
  • 学习与 Web 框架(如 Flask、Django)的集成
  • 探索大数据量下的性能优化

以上就是Python使用Pyecharts绘制精美饼状图的示例代码的详细内容,更多关于Python Pyecharts绘制饼状图的资料请关注骃骐网其它相关文章!

您可能感兴趣的文章:

  • Python可视化神器pyecharts绘制饼状图
  • 使用Python和Pyecharts创建交互式地图
  • Python利用pyecharts实现数据可视化的示例代码
  • 如何在Python中使用pyecharts图形画可视化大屏

相关推荐:

如何给Python Tkinter窗口添加背景图片_在Canvas画布上绘制Image

Tk/Toplevel窗口本身不支持图片背景,仅接受颜色值;必须用Canvas控件通过create_image配合anchor="nw"和place(relwidth=1, relheight=1)实现伪背景,并强引用PhotoImage防止回收。 为什么直接给 Tk 或 Toplevel 设置背景图会失败 因为 Tk 和 Toplevel 窗口本身不支持 background 属性设为图片,只认...

如何在支持滚动的 tkinter Canvas 上正确绘制覆盖图像的矩形

本文详解为何在嵌套 Frame 的可滚动 Canvas 中无法显示 create_rectangle,根本原因是 create_window 添加的控件始终遮盖 canvas 图形项;解决方案是改用 create_image 直接绘图,并动态设置 scrollregion。 本文详解为何在嵌套 frame 的可滚动 canvas 中无法显示 `create_rectangle`,根本原因是 `cr...

如何在Python三引号字符串中安全使用反斜杠绘制ASCII树结构

Python三引号字符串中若包含未转义的反斜杠(如ASCII树中的/ \),会触发SyntaxWarning;解决方法是将其声明为原始字符串(raw string),即在三引号前加r前缀。 python三引号字符串中若包含未转义的反斜杠(如ascii树中的`/ \`),会触发syntaxwarning;解决方法是将其声明为原始字符串(raw string),即在三引号前加`r`前缀。 在Pytho...

如何用 Turtle 绘制可填充的字母(如 OLEG)

本文详解如何在 Python 的 turtle 模块中绘制真正可填充的字母图形,核心在于保持画笔始终落下、形成闭合无交叉的轮廓路径,并正确调用 begin_fill() 与 end_fill()。 本文详解如何在 python 的 turtle 模块中绘制真正可填充的字母图形,核心在于保持画笔始终落下、形成闭合无交叉的轮廓路径,并正确调用 `begin_fill()` 与 `end_fill()`...

如何在Python三重引号字符串中安全使用反斜杠(如绘制ASCII树结构)

Python三重引号字符串中若包含未转义的反斜杠(如\或\/),会触发SyntaxWarning警告;解决方法是使用原始字符串(raw string)前缀r,使反斜杠被字面量解析,避免转义解析错误。 python三重引号字符串中若包含未转义的反斜杠(如`\ `或`\/`),会触发syntaxwarning警告;解决方法是使用原始字符串(raw string)前缀`r`,使反斜杠被字面量解析,避免转...

Python实现逻辑回归可视化_决策边界绘制与分类效果评估

根本原因是数据未归一化或网格点过稀疏:特征尺度差异导致权重偏差、等高线扭曲,50点网格造成锯齿;应标准化特征并用200点网格,以predict_proba输出概率后contourf绘图。 为什么 plot_decision_boundary 画不出清晰的决策边界? 根本原因往往是数据没归一化,或网格点太稀疏。逻辑回归对特征尺度敏感,X1 和 X2 量级差100倍时,梯度下降会抖动,训练出的权重 w...

CSS怎么画符号_CSS绘制特殊符号与图标方法教程

答案:CSS通过伪元素、边框、阴影和变换等属性组合绘制图标,具有高性能、高可定制性和响应式优势,适用于简单单色UI元素,但复杂图标受限于代码复杂度与可维护性,建议结合SVG或字体图标使用。 CSS确实能画出各种符号和图标,它主要通过巧妙运用伪元素、边框、阴影以及变换等CSS属性的组合来实现。这种方式不仅能有效减少页面对外部图片资源的请求,提升加载速度,还能让图标拥有极高的可定制性,比如随意改变颜色...

CSS直线怎么加_CSS绘制水平垂直直线与样式设置教程

答案:CSS中实现直线的常见方法有四种:使用border属性适合简单分隔线;伪元素::before/::after适用于精确定位的装饰性线条;background渐变可实现自定义虚线、点线等复杂样式;语义化标签hr用于内容分隔,兼顾可访问性。每种方法根据场景选择,border简单高效,伪元素灵活不占布局,背景渐变控制精细,hr符合语义规范。 CSS中添加直线,通常我们不是直接“画”一条线,而是通过...