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之有容乃大的list(4)
Sep 28 Python
Python tkinter事件高级用法实例
Jan 31 Python
python批量替换多文件字符串问题详解
Apr 22 Python
Python3 串口接收与发送16进制数据包的实例
Jun 12 Python
python实现的登录与提交表单数据功能示例
Sep 25 Python
python实现文件批量编码转换及注意事项
Oct 14 Python
python3中利用filter函数输出小于某个数的所有回文数实例
Nov 24 Python
Python+appium框架原生代码实现App自动化测试详解
Mar 06 Python
PyQt5+python3+pycharm开发环境配置教程
Mar 24 Python
利用matplotlib为图片上添加触发事件进行交互
Apr 23 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
May 18 Python
如何基于python实现年会抽奖工具
Oct 20 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实现与ASP Banner组件相似的类
2006/10/09 PHP
PHP页面间传递参数实例代码
2008/06/05 PHP
用PHP为SHOPEX增加日志功能代码
2010/07/02 PHP
Laravel框架文件上传功能实现方法示例
2019/04/16 PHP
prototype 学习笔记整理
2009/07/17 Javascript
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
2020/04/04 Javascript
js如何获取兄弟、父类等节点
2014/01/06 Javascript
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
JS控制表格实现一条光线流动分割行的方法
2015/03/09 Javascript
javascript制作2048游戏
2015/03/30 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
使用NodeJs 开发微信公众号(三)微信事件交互实例
2016/03/02 NodeJs
基于javascript编写简单日历
2016/05/02 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
2017/03/25 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
基于axios封装fetch方法及调用实例
2018/02/05 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
微信小程序新闻网站详情页实例代码
2020/01/10 Javascript
[02:45]DOTA2英雄基础教程 伐木机
2013/12/23 DOTA
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
Python语言描述随机梯度下降法
2018/01/04 Python
Python匿名函数及应用示例
2019/04/09 Python
如何通过python画loss曲线的方法
2019/06/26 Python
python pandas.DataFrame.loc函数使用详解
2020/03/26 Python
CSS3实现精美横向滚动菜单按钮
2017/04/14 HTML / CSS
使用HTML5 Canvas API绘制弧线的教程
2016/03/22 HTML / CSS
加拿大高尔夫超市:Golf Town
2018/01/12 全球购物
德国网上花店:Valentins
2018/08/15 全球购物
仓管员岗位职责范文
2013/11/08 职场文书
读书演讲主持词
2014/03/18 职场文书
2014年高校辅导员工作总结
2014/12/09 职场文书
离职告别感言
2015/08/04 职场文书
导游词之江西赣州
2019/10/15 职场文书