matplotlib bar()实现百分比堆积柱状图
作者:mighty13 发布时间:2022-06-22 02:05:22
标签:matplotlib,百分比,堆积,柱状图
使用matplotlib
创建百分比堆积柱状图的思路与堆积柱状图类似,只不过bottom
参数累计的不是数值而是百分比,因此,需要事先计算每组柱子的数值总和,进而求百分比。
未使用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()
来源:https://blog.csdn.net/mighty13/article/details/113891564
0
投稿
猜你喜欢
- 一份基于cnn的手写数字自识别的代码,供大家参考,具体内容如下# -*- coding: utf-8 -*-import tensorflo
- 要以读文件的模式打开一个文件对象,使用Python内置的open()函数,传入文件名和标示符,标示符'r'表示读。>&
- 本文实例讲述了python获得两个数组交集、并集、差集的房部分。分享给大家供大家参考。具体如下:1. 获取两个list 的交集#方法一:a=
- Mysql索引索引介绍索引是什么官方介绍索引是帮助MySQL高效获取数据的数据结构。更通俗的说,数据库索引好比是一本书前面的目录,能加快数据
- ElementUI在el-table中使用el-popoverVue ElementUI在el-table中使用el-popover,点击嵌
- 1.int,float相互转换例1:int转float使用float(int)float转int使用int(float)# coding:u
- 这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获。1 如何创建指定长度且有特定值的list不推荐方式l
- 字符串是Python中最常用的数据类型1、创建字符串1.1 使用 ’ ’ 或 " &quo
- 记录了Linux 安装python3.7.0的详细过程,供大家参考,具体内容如下我这里使用的时centos7-mini,centos系统本身
- 根据 Dotzler 的统计,IE6 的份额正在缩水,这可能是 2009 年本人听到的第一个好消息。于此同时,Gmail 的浏览器支持列表中
- 1、首先简述数据挖掘的过程第一步:数据选择可以通过业务原始数据、公开的数据集、也可通过爬虫的方式获取。第二步: 数据预处理数据极可能有噪音,
- 很久没有发表文章了,最近一直在研究产品设计标准的问题,之前有发过一篇关于 Axure的教程 ,相信很多人已经学会如何使用,这次我给大家介绍一
- 本文实例为大家分享了python实现Nao机器人单目测距的具体代码,供大家参考,具体内容如下此代码适于用做对Nao机器人做视觉识
- 今天突然想起做一个当鼠标经过<a/>时,会发出声音Js代码如下: <script type="text
- python list筛选包含字符的字段l = [‘123a',‘456b',‘789c']ll = [s for
- 我们先把数据表建好use test;create table `employee`( emp_no int unsigned, emp_na
- 1. 排名函数与PARTITION BY --所有数据 SELECT * FROM dbo.student AS a INNER JOIN
- SQLServer中的批量注释批量注释Ctrl + (K,C):按住Ctrl键不放,然后依次按下K和C批量取消注释Ctrl + (K,U):
- 在认识ImageMagick之前,我使用的图像浏览软件是KuickShow,截图软件是KSnapShot,这两款软件都是KDE附带的软件,用
- 以下是个人在学习beautifulSoup过程中的一些总结,目前我在使用爬虫数据时使用的方法的是:先用find_all()找出需要内容所在的