python绘制堆叠柱状图_Python绘制堆叠柱状图的实例

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

1.什么是堆叠柱状图

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

20190709090140.jpg

2.数据展示

20190709090151.jpg

这里展示了部分数据,主要是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。

20190709090201.jpg

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值