Python绘制堆叠柱状图的实例


Posted in Python onJuly 09, 2019

有个朋友要求帮忙绘制堆叠柱状图,查阅了一些文档之后也算是完成了,只是一个小demo,下面我就记录一下。

1.什么是堆叠柱状图

与并排显示分类的分组柱状图不同,堆叠柱状图将每个柱子进行分割以显示相同类型下各个数据的大小情况。它可以形象的展示一个大分类包含的每个小分类的数据,以及各个小分类的占比,显示的是单个项目与整体之间的关系。效果图如下:

Python绘制堆叠柱状图的实例

2.数据展示

Python绘制堆叠柱状图的实例

这里展示了部分数据,主要是treatment就是对应的上图分类一,分类二;species就是对应的分组;ra就是对应的各个分组的比例。

3.Python代码

from matplotlib import pyplot as plt
import pandas as pd
import xlrd
import numpy as np
 
data = xlrd.open_workbook('ccc.xlsx')  #打开数据
table = data.sheet_by_index(0)     #获取sheet1的数据
nrows = table.nrows           #获取sheet1中的行
plot_list = ['plot1']
plot1_ra_list = [[0] for i in range(17)]#构建一个17X1的列表
i = 0
for row in range(1,nrows):       #循环读取表内数据
  if table.cell(row,0).value == 2015.0 and table.cell(row,1).value == 'plot1':
    print(table.cell(row, 3).value) #第三列是各个元素所占的比例
    print(i)
    plot1_ra_list[i][0]=(float(table.cell(row, 3).value))
    i+=1
#颜色列表
color = ['y','r','snow','b','k','g','orange','c','bisque','brown','lime','aqua','coral','darkcyan','gold','teal','pink',]
plt.figure(figsize=(8,6))
for i in range(17):
  plt.bar(range(len(plot1_ra_list[i])), plot1_ra_list[i],bottom=np.sum(plot1_ra_list[:i],axis = 0),label=str(i+1),tick_label = plot_list,fc = color[i])
plt.legend()
plt.show()

4.效果展示

上述代码我只做了2015年的plot1,如果要把plot2增加上注意要对齐plot1和plot2的species数量,可以认为的添加,并补充对应的ra为0,这样子也不影响整个做图。下面我PO一张demo。

Python绘制堆叠柱状图的实例

以上这篇Python绘制堆叠柱状图的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python下函数参数的传递(参数带星号的说明)
Sep 19 Python
python实现获取序列中最小的几个元素
Sep 25 Python
python实现挑选出来100以内的质数
Mar 24 Python
Python打造出适合自己的定制化Eclipse IDE
Mar 02 Python
Python字符串拼接、截取及替换方法总结分析
Apr 13 Python
Python3 模块、包调用&路径详解
Oct 25 Python
Python 实现域名解析为ip的方法
Feb 14 Python
Python多线程通信queue队列用法实例分析
Mar 24 Python
使用Keras实现Tensor的相乘和相加代码
Jun 18 Python
Python Pandas list列表数据列拆分成多行的方法实现
Dec 14 Python
Python字典和列表性能之间的比较
Jun 07 Python
Python中re模块的元字符使用小结
Apr 07 Python
python3 线性回归验证方法
Jul 09 #Python
python time.sleep()是睡眠线程还是进程
Jul 09 #Python
python logging模块的使用总结
Jul 09 #Python
Django中如何使用sass的方法步骤
Jul 09 #Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
Jul 08 #Python
使用python socket分发大文件的实现方法
Jul 08 #Python
python查看文件大小和文件夹内容的方法
Jul 08 #Python
You might like
php mssql 分页SQL语句优化 持续影响
2009/04/26 PHP
PHP实现克鲁斯卡尔算法实例解析
2014/08/22 PHP
php采集内容中带有图片地址的远程图片并保存的方法
2015/01/03 PHP
CodeIgniter集成smarty的方法详解
2016/05/26 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
浅谈Yii乐观锁的使用及原理
2017/07/25 PHP
原生js做的手风琴效果的导航菜单
2013/11/08 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
2014/08/18 Javascript
Windows8下搭建Node.js开发环境教程
2014/09/03 Javascript
node.js中的fs.realpathSync方法使用说明
2014/12/16 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
九种原生js动画效果
2015/11/11 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
2017/01/16 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
JavaScript实现简单动态进度条效果
2018/04/06 Javascript
vue input输入框模糊查询的示例代码
2018/05/22 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
vue轻量级框架无法获取到vue对象解决方法
2019/05/12 Javascript
ant design实现圈选功能
2019/12/17 Javascript
javascript+css实现进度条效果
2020/03/25 Javascript
[02:04]2014DOTA2国际邀请赛 DK一个时代的落幕
2014/07/21 DOTA
[53:20]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 VG vs OG
2018/04/03 DOTA
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
python实现端口转发器的方法
2015/03/13 Python
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
2015/05/16 Python
遍历python字典几种方法总结(推荐)
2016/09/11 Python
Python中str is not callable问题详解及解决办法
2017/02/10 Python
详解Python map函数及Python map()函数的用法
2017/11/16 Python
详解Django配置优化方法
2019/11/18 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
美国CVS药店官网:CVS Pharmacy
2018/07/26 全球购物
.NET常见笔试题集
2012/12/01 面试题
商务英语专业应届毕业生求职信
2013/10/28 职场文书
一帮一活动总结
2014/05/08 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书