Python绘制堆叠柱状图的实例
作者:程序小学生 发布时间:2022-01-04 06:14:55
标签:Python,堆叠,柱状图
有个朋友要求帮忙绘制堆叠柱状图,查阅了一些文档之后也算是完成了,只是一个小demo,下面我就记录一下。
1.什么是堆叠柱状图
与并排显示分类的分组柱状图不同,堆叠柱状图将每个柱子进行分割以显示相同类型下各个数据的大小情况。它可以形象的展示一个大分类包含的每个小分类的数据,以及各个小分类的占比,显示的是单个项目与整体之间的关系。效果图如下:
2.数据展示
这里展示了部分数据,主要是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。
来源:https://blog.csdn.net/qq_25174673/article/details/85126457


猜你喜欢
- 先来看一道题目:>>> def func(numbers=[], num=1):... numbers.append(nu
- 变量(variable)是Python语言中一个非常重要的概念。变量的主要作用就是为Python程序中的某个值起一个名字。类似于“张三”、“
- 1 常规错误的yum安装方法:在前文中记述了CentOS 6.5系统中通过yum方式快速地搭建了LNMP环境,那么是否也能在CentOS 7
- 前言:又到每日分享Python小技巧的时光了,今天给大家分享的是Python接口常用封装函数。相信对于封装,大家都不陌生吧,今天就用四个小案
- MatplotlibMatplotlib 是Python中类似 MATLAB 的绘图工具,熟悉 MATLAB 也可以很快的上手 Matplo
- 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。Python 自1.5版本起增加了re 模块,它提供 Pe
- 所谓“评论”不是必须得有文本框,用户录入提交数据才算,广义上的评论包括用户的任何“表态”,典型如打分。我接触电子商务时间并不长,最早应该是0
- google找到这样一个解决方法: 在上传控件中插入了值,就只能通过form的reset功能来清空了,但是form里面其他的值也被reset
- 两行JavaScript代码的QQ窗口抖动效果<img id="win" style='pos
- 实现效果示例代码import timefrom selenium import webdriverfrom selenium.webdriv
- 今天一个同事报告一个问题,表都不能使用了,检查了一下,发现问题 db2 => select * from testACTNO ACTK
- 本文实例为大家分享了mysql 5.6.17 安装教程简单版,供大家参考,具体内容如下1.linux版mysql下载(建议不要下5.7,安装
- 字符串在Python内部的表示是Unicode编码,因此,在做编码转换时,通常需要以Unicode作为中间编码,即先将其他编码的字符串解码(
- 前言 Javascript是一门很自由的语言,在JS里,里面一切的东西都是变量.包括函数在内. 基础 函数 (定义)(参数1[,参数2..]
- detectres.asp<HTML><head><TITLE>asp教程之全能屏幕分辨率侦测</
- 本文实例讲述了python使用reportlab实现图片转换成pdf的方法。分享给大家供大家参考。具体实现方法如下:#!/usr/bin/e
- 图像轮廓概念轮廓是一系列相连的点组成的曲线,代表了物体的基本外形。谈起轮廓不免想到边缘,它们确实很像。简单的说,轮廓是连续的,边缘并不全都连
- 需求:需要实现一个用户反馈的接口,用户通过接口提交:1.一段文字2. 一个log文件3. 多个图片找了很多ModelForm,DRF-Ser
- 本文实例讲述了Python编程修改MP3文件名称的方法。分享给大家供大家参考,具体如下:最近刚刚开始学习Python,顺便锻炼思维写的一个小
- 1.去重示例表内容参考此文章有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数