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网络编程学习笔记(三):socket网络服务器
Jun 09 Python
python中管道用法入门实例
Jun 04 Python
Python实现简单登录验证
Apr 13 Python
利用Python实现Windows定时关机功能
Mar 21 Python
Python基础教程之浅拷贝和深拷贝实例详解
Jul 15 Python
初探利用Python进行图文识别(OCR)
Feb 26 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
Feb 15 Python
如何使用repr调试python程序
Feb 28 Python
使用python实现飞机大战游戏
Mar 23 Python
Python将二维列表list的数据输出(TXT,Excel)
Apr 23 Python
浅谈numpy中函数resize与reshape,ravel与flatten的区别
Jun 18 Python
python实现测试工具(一)——命令行发送get请求
Oct 19 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编程实现csv文件导入mysql数据库的方法
2017/04/29 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
PHP数据对象映射模式实例分析
2019/03/29 PHP
PHP实现通过二维数组键值获取一维键名操作示例
2019/10/11 PHP
JavaScript CSS修改学习第五章 给“上传”添加样式
2010/02/19 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
2013/10/11 Javascript
JavaScript使用indexOf获得子字符串在字符串中位置的方法
2015/04/06 Javascript
nodejs初步体验篇
2015/11/23 NodeJs
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
jQuery中DOM节点的删除方法总结(超全面)
2017/01/22 Javascript
详解vue2路由vue-router配置(懒加载)
2017/04/08 Javascript
页面缩放兼容性处理方法(zoom,Firefox火狐浏览器)
2017/08/29 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
JS从非数组对象转数组的方法小结
2018/03/26 Javascript
JS实现全屏预览F11功能的示例代码
2018/07/23 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
Vue实现简单的跑马灯
2020/05/25 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
2020/05/28 Javascript
微信小程序实现聊天室
2020/08/21 Javascript
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
对vue生命周期的深入理解
2020/12/03 Vue.js
python thread 并发且顺序运行示例
2009/04/09 Python
python脚本实现数据导出excel格式的简单方法(推荐)
2016/12/30 Python
python统计文章中单词出现次数实例
2020/02/27 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
全球独特生活方式产品和礼品购物网站:AHAlife
2018/09/18 全球购物
美国最好的葡萄酒网上商店:Wine Library
2019/11/02 全球购物
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
2014/09/26 面试题
家长给孩子的表扬信
2014/01/17 职场文书
服装设计师职业生涯规划范文
2014/02/28 职场文书
企业新年寄语
2014/04/04 职场文书
《故乡》教学反思
2014/04/10 职场文书
环境工程专业自荐信范文
2014/06/24 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
监考失职检讨书
2015/01/26 职场文书
java实现web实时消息推送的七种方案
2022/07/23 Java/Android