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 相关文章推荐
pycharm中连接mysql数据库的步骤详解
May 02 Python
Python编程实现二分法和牛顿迭代法求平方根代码
Dec 04 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
Mar 05 Python
python3+PyQt5图形项的自定义和交互 python3实现page Designer应用程序
Jul 20 Python
Python利用sqlacodegen自动生成ORM实体类示例
Jun 04 Python
基于Python的Post请求数据爬取的方法详解
Jun 14 Python
Flask框架中request、请求钩子、上下文用法分析
Jul 23 Python
用Pelican搭建一个极简静态博客系统过程解析
Aug 22 Python
Python Collatz序列实现过程解析
Oct 12 Python
Python for循环及基础用法详解
Nov 08 Python
Python错误的处理方法
Jun 23 Python
使用keras实现非线性回归(两种加激活函数的方式)
Jul 05 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
ip签名探针
2006/10/09 PHP
PHP通用检测函数集合
2011/02/08 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
两个JavaScript jsFiddle JSBin在线调试器
2010/03/14 Javascript
子窗口、父窗口和Silverlight之间的相互调用
2010/08/16 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
jquery如何改变html标签的样式(两种实现方法)
2013/01/16 Javascript
为jQuery添加Webkit的触摸的方法分享
2014/02/02 Javascript
JS动态修改图片的URL(src)的方法
2015/04/01 Javascript
jQuery中通过ajax的get()函数读取页面的方法
2016/02/29 Javascript
Bootstrap每天必学之标签页(Tab)插件
2020/08/09 Javascript
基于AngularJS前端云组件最佳实践
2016/10/20 Javascript
JS返回只包含数字类型的数组实例分析
2016/12/16 Javascript
React BootStrap用户体验框架快速上手
2018/03/06 Javascript
js正则表达式校验指定字符串的方法
2018/07/23 Javascript
微信运维交互机器人的示例代码
2018/11/12 Javascript
如何获取vue单文件自身源码路径
2019/05/06 Javascript
基于JavaScript获取url参数2种方法
2020/04/17 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
2020/09/10 Javascript
[54:08]LGD女子刀塔学院 DOTA2炼金术士教学
2014/01/09 DOTA
python中map()与zip()操作方法
2016/02/27 Python
python使用pycharm环境调用opencv库
2018/02/11 Python
Python清空文件并替换内容的实例
2018/10/22 Python
python在新的图片窗口显示图片(图像)的方法
2019/07/11 Python
python解析yaml文件过程详解
2019/08/30 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
2019/10/24 Python
jupyter notebook参数化运行python方式
2020/04/10 Python
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
荷兰在线钓鱼商店:Raven
2019/06/26 全球购物
好矿嫂事迹材料
2014/01/21 职场文书
应用化学专业职业生涯规划书
2014/01/22 职场文书
秦始皇兵马俑导游词
2015/02/02 职场文书
2015年采购员工作总结
2015/04/27 职场文书
六一儿童节致辞
2015/07/31 职场文书
学校教代会开幕词
2016/03/04 职场文书