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设置检查点简单实现代码
Jul 01 Python
python操作CouchDB的方法
Oct 08 Python
python打开文件并获取文件相关属性的方法
Apr 23 Python
Python PyQt4实现QQ抽屉效果
Apr 20 Python
pycharm 在windows上编辑代码用linux执行配置的方法
Oct 27 Python
Python类的继承、多态及获取对象信息操作详解
Feb 28 Python
pycharm中显示CSS提示的知识点总结
Jul 29 Python
python实现代码统计器
Sep 19 Python
Python中文分词库jieba,pkusegwg性能准确度比较
Feb 11 Python
最新2019Pycharm安装教程 亲测
Feb 28 Python
python随机模块random的22种函数(小结)
May 15 Python
Python爬虫抓取论坛关键字过程解析
Oct 19 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+MYSQL的文章管理系统(二)
2006/10/09 PHP
DOM XPATH获取img src值的query
2013/09/23 PHP
php判断页面是否是微信打开的示例(微信打开网页)
2014/04/25 PHP
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
Javascript中获取出错代码所在文件及行数的代码
2010/09/23 Javascript
juqery 学习之三 选择器 层级 基本
2010/11/25 Javascript
jQuery UI Dialog控件中的表单无法正常提交的解决方法
2010/12/19 Javascript
Javascript中valueOf与toString区别浅析
2013/03/19 Javascript
Bootstrap实现响应式导航栏效果
2015/12/28 Javascript
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
2017/01/05 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
angularjs封装$http为factory的方法
2017/05/18 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
vscode配置vue下的es6规范自动格式化详解
2019/03/20 Javascript
vue父组件给子组件的组件传值provide inject的方法
2019/10/23 Javascript
Vue3新特性之在Composition API中使用CSS Modules
2020/07/13 Javascript
[01:11]辉夜杯战队访谈宣传片—CDEC.Y
2015/12/26 DOTA
Python 可爱的大小写
2008/09/06 Python
python 从远程服务器下载日志文件的程序
2013/02/10 Python
Python基于identicon库创建类似Github上用的头像功能
2017/09/25 Python
python Pygame的具体使用讲解
2017/11/03 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
通过python实现随机交换礼物程序详解
2019/07/10 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
PIL.Image.open和cv2.imread的比较与相互转换的方法
2020/06/03 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
联想西班牙官网:Lenovo西班牙
2018/08/28 全球购物
英国亚马逊官方网站:Amazon.co.uk
2019/08/09 全球购物
Intersport西班牙:在线体育商店
2019/11/06 全球购物
预备党员的自我评价
2014/03/12 职场文书
事假请假条范文
2014/04/11 职场文书
关于感恩的演讲稿500字
2014/08/26 职场文书
工作所在部门证明
2014/09/21 职场文书
教师节校长致辞
2015/07/31 职场文书
使用Python的开发框架Brownie部署以太坊智能合约
2021/05/28 Python
Nginx+Tomcat负载均衡多实例详解
2022/04/11 Servers