matplotlib bar()实现百分比堆积柱状图


Posted in Python onFebruary 24, 2021

使用matplotlib创建百分比堆积柱状图的思路与堆积柱状图类似,只不过bottom参数累计的不是数值而是百分比,因此,需要事先计算每组柱子的数值总和,进而求百分比。

matplotlib bar()实现百分比堆积柱状图

未使用numpy版本

适用于少量数据,数据结构需要手动构造。

import matplotlib.pyplot as plt

labels = ['G1', 'G2', 'G3', 'G4', 'G5']
first = [20, 34, 30, 35, 27]
second = [25, 32, 34, 20, 25]
third = [21, 31, 37, 21, 28]
fourth = [26, 31, 35, 27, 21]
data = [first, second, third, fourth]

x = range(len(labels))
width = 0.35

# 将bottom_y元素都初始化为0
bottom_y = [0] * len(labels)
# 计算每组柱子的总和,为计算百分比做准备
sums = [sum(i) for i in zip(first, second, third, fourth)]
for i in data:
 # 计算每个柱子的高度,即百分比
 y = [a/b for a, b in zip(i, sums)]
 plt.bar(x, y, width, bottom=bottom_y)
 # 计算bottom参数的位置
 bottom_y = [(a+b) for a, b in zip(y, bottom_y)]

plt.xticks(x, labels)
plt.title('Percent stacked bar ')
plt.show()

使用numpy版本

第一个版本的缺陷在于数据需要手动构造,而且计算稍微繁琐一些。
使用numpy便于处理规模比较大且已存储在文件中数据的数据,计算更简便。

import numpy as np
import matplotlib.pyplot as plt

labels = ['G1', 'G2', 'G3', 'G4', 'G5']
first = [20, 34, 30, 35, 27]
second = [25, 32, 34, 20, 25]
third = [21, 31, 37, 21, 28]
fourth = [26, 31, 35, 27, 21]
data = [first, second, third, fourth]

x = range(len(labels))
width = 0.35

# 将bottom_y元素都初始化为0
bottom_y = np.zeros(len(labels))
data = np.array(data)
# 按列计算计算每组柱子的总和,为计算百分比做准备
sums = np.sum(data, axis=0)
for i in data:
 # 计算每个柱子的高度,即百分比
 y = i / sums
 plt.bar(x, y, width, bottom=bottom_y)
 # 计算bottom参数的位置
 bottom_y = y + bottom_y

plt.xticks(x, labels)
plt.title('Percent stacked bar ')
plt.show()

到此这篇关于matplotlib bar()实现百分比堆积柱状图 的文章就介绍到这了,更多相关matplotlib 百分比堆积柱状图 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python黑魔法之编码转换
Jan 25 Python
Python中用post、get方式提交数据的方法示例
Sep 22 Python
python opencv人脸检测提取及保存方法
Aug 03 Python
使用python opencv对目录下图片进行去重的方法
Jan 12 Python
浅谈PySpark SQL 相关知识介绍
Jun 14 Python
Python实现微信机器人的方法
Sep 06 Python
python连接、操作mongodb数据库的方法实例详解
Sep 11 Python
Python any()函数的使用方法
Oct 28 Python
python有序查找算法 二分法实例解析
Feb 18 Python
K最近邻算法(KNN)---sklearn+python实现方式
Feb 24 Python
Python将字典转换为XML的方法
Aug 01 Python
python b站视频下载的五种版本
May 27 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
Feb 24 #Python
pandas apply使用多列计算生成新的列实现示例
Feb 24 #Python
pandas map(),apply(),applymap()区别解析
Feb 24 #Python
Python的Tqdm模块实现进度条配置
Feb 24 #Python
详解pandas apply 并行处理的几种方法
Feb 24 #Python
python自动生成sql语句的脚本
Feb 24 #Python
Django与AJAX实现网页动态数据显示的示例代码
Feb 24 #Python
You might like
php数组编码转换示例详解
2014/03/11 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
PHP实现根据数组某个键值大小进行排序的方法
2018/03/13 PHP
php微信开发之谷歌测距
2018/06/14 PHP
laravel withCount 统计关联数量的方法
2019/10/10 PHP
PHP7 新增功能
2021/03/09 PHP
JS中的异常处理方法分享
2013/12/22 Javascript
jQuery实现自动与手动切换的滚动新闻特效代码分享
2015/08/27 Javascript
AngularJS实现动态编译添加到dom中的方法
2016/11/04 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
vue-cli中打包图片路径错误的解决方法
2017/10/26 Javascript
浅谈React前后端同构防止重复渲染
2018/01/05 Javascript
vue组件中iview的modal组件爬坑问题之modal的显示与否应该是使用v-show
2019/04/12 Javascript
详解vue中移动端自适应方案
2019/05/05 Javascript
Vue 技巧之控制父类的 slot
2020/02/24 Javascript
[01:05:36]VP vs TNC Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
python处理cookie详解
2014/02/07 Python
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
深入浅出学习python装饰器
2017/09/29 Python
pytorch masked_fill报错的解决
2020/02/18 Python
Python表达式的优先级详解
2020/02/18 Python
python模拟哔哩哔哩滑块登入验证的实现
2020/04/24 Python
对Matlab中共轭、转置和共轭装置的区别说明
2020/05/11 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
什么是类的返射机制
2016/02/06 面试题
Delphi笔试题
2016/11/14 面试题
小学教研工作制度
2014/01/15 职场文书
名人演讲稿范文
2014/09/16 职场文书
房产公证委托书范本
2014/09/20 职场文书
高考升学宴答谢词
2015/01/20 职场文书
骆驼祥子读书笔记
2015/06/26 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书
七年级作文之秋游
2019/10/21 职场文书
浅谈MySQL next-key lock 加锁范围
2021/06/07 MySQL
Python图片验证码降噪和8邻域降噪
2021/08/30 Python
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers