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

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

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

饼图( Pie Plot)简介

1

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

快速绘制

  1. 基于matplotlib

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

    2

定制多样化的饼图

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

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

  1. 自定义饼图

    import matplotlib as mpl
    import matplotlib.pyplot as plt
    from matplotlib_venn import venn3, venn3_circlesplt.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()
    

    3

  2. 拓展-警惕饼图带来的阅读障碍

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

    4

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

    5

    # 饼图比较
    import matplotlib as mpl
    import matplotlib.pyplot as pltplt.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()
    
    # 条形图比较
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    import seaborn as snsplt.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快速绘制饼图,并通过修改参数或者辅以其他绘图知识自定义各种各样的饼图来适应相关使用场景。也提醒了在多个饼图间进行比较的困难,更建议使用条形图。

    共勉~

相关文章:

  • PostgreSQL-04-入门篇-连接多张表
  • 【微服务】Nacos配置中心和客户端数据同步模式
  • Vue3项目开发——新闻发布管理系统(一)
  • 《黑神话:悟空》总销量已破 450 万份,总销售额超过15亿元,对于单机游戏来说,这一成绩意味着什么?
  • 博途PLC手自动控制功能块(FB和FC完整SCL源代码)
  • 干货:2024必备的四大PDF编辑器推荐!
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • Hadoop入门基础(三):Hadoop启动踩坑记录
  • 数学基础 -- 定积分之估算积分
  • [Qt][Qt 文件]详细讲解
  • PHP网页下的注入原理
  • 【时时三省】(C语言基础)指针进阶
  • 亦菲喊你来学习之机器学习(6)--逻辑回归算法
  • 【Python】动态类型、输入和输出、条件语句
  • YSLOW(一款实用的网站性能检测工具)
  • 【知识碎片】第三方登录弹窗效果
  • CSS魔法堂:Absolute Positioning就这个样
  • Git 使用集
  • GitUp, 你不可错过的秀外慧中的git工具
  • JAVA 学习IO流
  • Just for fun——迅速写完快速排序
  • leetcode388. Longest Absolute File Path
  • mysql_config not found
  • MySQL的数据类型
  • nodejs:开发并发布一个nodejs包
  • rc-form之最单纯情况
  • vue2.0项目引入element-ui
  • windows下使用nginx调试简介
  • 基于Android乐音识别(2)
  • 力扣(LeetCode)22
  • 你不可错过的前端面试题(一)
  • 数据结构java版之冒泡排序及优化
  • 微信小程序--------语音识别(前端自己也能玩)
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 译有关态射的一切
  • 阿里云ACE认证之理解CDN技术
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (21)起落架/可伸缩相机支架
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (四)Android布局类型(线性布局LinearLayout)
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (一)为什么要选择C++
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .NET 8 跨平台高性能边缘采集网关