局部整体(三)利用python绘制饼图

局部整体(三)利用python绘制饼图

饼图( Pie Plot)简介

饼图是一个将整体划分为几个扇形的圆形统计图表,用于描述数量、频率或百分比之间的相对关系。饼形图适合用来快速展示数据比例分布,但不利于展示较多项目。饼图也因过于关注不同部分彼此或相对于整体的大小关系,导致与其他饼形图作整体比较时不能显示出任何变化而饱受诟病。

快速绘制

  1. 基于matplotlib

    python 复制代码
    import matplotlib.pyplot as plt
    
    # 自定义数据
    size_of_groups=[12,11,3,30]
    
    # 利用pie函数快速创建
    plt.pie(size_of_groups)
    plt.show()

定制多样化的饼图

自定义饼图一般是结合使用场景对相关参数进行修改,并辅以其他的绘图知识。参数信息可以通过官网进行查看,其他的绘图知识则更多来源于实战经验,大家不妨将接下来的绘图作为一种学习经验,以便于日后总结。

关于pie的更多用法可参考matplotlib.pyplot.pie

  1. 自定义饼图

    python 复制代码
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    from matplotlib_venn import venn3, venn3_circles
    
    plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
    
    # 自定义数据
    names='groupA', 'groupB', 'groupC', 'groupD',
    values=[12,11,3,30]
    
    # 初始化布局
    fig = plt.figure(figsize=(12,8))
    
    # 添加标签
    plt.subplot(1, 4, 1) 
    plt.pie(values, labels=names, labeldistance=1.15)
    plt.title('添加标签')
    
    # 自定义扇形
    plt.subplot(1, 4, 2) 
    plt.pie(values, labels=names, labeldistance=1.15, wedgeprops = { 'linewidth' : 3, 'edgecolor' : 'white' })
    plt.title('自定义扇形')
    
    # 自定义颜色
    plt.subplot(1, 4, 3) 
    colors = ['#4F6272', '#B7C3F3', '#DD7596', '#8EB897']
    plt.pie(values, labels=names, labeldistance=1.15, 
                wedgeprops = { 'linewidth' : 1, 'edgecolor' : 'white' }, colors=colors)
    plt.title('自定义颜色')
    
    # 显示百分比
    plt.subplot(1, 4, 4) 
    plt.pie(values, labels=names, autopct='%1.1f%%')
    plt.title('显示百分比')
    
    plt.show()
  2. 拓展-警惕饼图带来的阅读障碍

    观察比较三个图形中哪个分组的值最高,同时尝试找出各组之间的值的变化趋势

    是不是很难看出来,下面将饼图转化为条形图再看看呢?

    python 复制代码
    # 饼图比较
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    
    plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
    
    # 自定义标签
    labels = ['a', 'b', 'c', 'd', 'e']
    
    # 初始化布局
    fig = plt.figure(figsize=(12,5))
    
    # 饼图1
    plt.subplot(1, 3, 1) 
    plt.pie([17,18,20,22,24], labels=labels)
    
    # 饼图2
    plt.subplot(1, 3, 2) 
    plt.pie([20,18,21,20,20], labels=labels)
    
    # 饼图3
    plt.subplot(1, 3, 3) 
    plt.pie([24,23,21,19,18], labels=labels)
    
    plt.show()
    python 复制代码
    # 条形图比较
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    import seaborn as sns
    
    plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
    
    # 自定义标签
    labels = ['a', 'b', 'c', 'd', 'e']
    
    # 初始化布局
    fig = plt.figure(figsize=(12,3))
    
    # 条形图1
    plt.subplot(1, 3, 1) 
    sns.barplot(x=labels, y=[17,18,20,22,24], errorbar=None)
    
    # 条形图2
    plt.subplot(1, 3, 2) 
    sns.barplot(x=labels, y=[20,18,21,20,20], errorbar=None)
    
    # 条形图3
    plt.subplot(1, 3, 3) 
    sns.barplot(x=labels, y=[24,23,21,19,18], errorbar=None)
    
    
    plt.show()

    总结

    以上通过matplotlib的pie快速绘制饼图,并通过修改参数或者辅以其他绘图知识自定义各种各样的饼图来适应相关使用场景。也提醒了在多个饼图间进行比较的困难,更建议使用条形图。

    共勉~

相关推荐
caoerzhong1 分钟前
JeeWMS 开源仓库管理系统权限与域验证解析:Java WMS 如何把数据权限管到仓、货主与人
java·python·开源·vue
一木 之林1 分钟前
Miniconda 安装与 Jupyter 使用入门
ide·python·jupyter
抓不住时间的沙25 分钟前
Butterfly主题 5.7 导航栏添加相册同时设置相册入口密码
css·python·node.js
风合星语37 分钟前
2026 机器人工程实例(五):让 Allegro Hand 在 MuJoCo 中完成接触抓取——抓取状态机、稳定抬升与受控释放
c++·python·机器人·仿真
imbackneverdie1 小时前
告别 Copilot?Codex 本地化部署指南
人工智能·ai·aigc·数据可视化·本地化·codex
隐擎fox1 小时前
解构无感人机验证底层机制:行为生物轨迹采样、环境评分模型与自动化对抗实战
自动化测试·python·网络协议·tcp/ip·网络爬虫
haidao0312 小时前
氙灯光源技术特性及其在光催化实验中的标准化应用研究
人工智能·python·能源
用户0332126663672 小时前
使用 Python 设置 Excel 行列自适应 【代码示例】
python·excel
Ticnix2 小时前
RAG 的坑不在检索,在"对齐":pgvector 实战手记
python·agent·全栈
kyrie_sakura2 小时前
python学习笔记14 -- FastAPI
笔记·python·学习·fastapi