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

Written by

in

文章目录
  • 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( 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:所有扇形角度相同,仅半径不同
  • 目录
    • Pyecharts 简介
    • 基础饼状图
      • 调整图例位置
      • 自定义颜色方案
    • 南丁格尔玫瑰图
      • 滚动图例
      • 双玫瑰图对比
    • 给读者的学习建议
      • 1. 学习路径规划

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

    对比效果

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

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

    初级阶段(1-2周)

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

    中级阶段(2-4周)

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

    高级阶段(1个月以上)

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

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

    您可能感兴趣的文章:

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

    站内搜索