【如何用python 画带有表格数据的堆叠柱状图】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

如何用python 画带有表格数据的堆叠柱状图


提示:以下是本篇文章正文内容,下面案例可供参考

一、大致思路

0.读取数据并整理与清洗
1.堆叠柱状图,堆叠选用累积for 函数画图
2.表格数据,选用plt.table展示
3.柱状图何表格的位置摆放

二、实现代码

1.数据

不同灾难随着时间损失数

2.代码

代码如下(示例):

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
dt=pd.read_excel('disaster.xlsx',index_col=0)
data=dt.values[::-1,:]#行倒叙翻转 ,方便y轴从下到上,数值由小变大画图

f=plt.figure(dpi=200)
ax=f.subplots()
columns=dt.columns#列名,五个灾难
rows=dt.index#行名,Index(['100year', '50year', '20year', '10year', '5year'], dtype='object', name='loss by disater')
color=plt.cm.PuBuGn(np.linspace(.2,.9,len(rows)))
index=np.arange(len(columns))+.3 #五个灾难为05,再+.3,作为x坐标轴位置,array([0.3, 1.3, 2.3, 3.3, 4.3])
bar_width=.4#0.3+0.4+0.3=1,即柱状图宽度为0.4且在x轴0.3的位置开始画图,让柱状图在中间位置
y_offset=np.zeros(len(columns))#y轴第一个柱状图起始位置都为0,对应五个列名为五个0
cell_text=[]#生成一个用于累加y轴堆叠数值的列表
for i in range(data.shape[0]): #data.shape[0]data第一个对象的数量,代指这里五个灾难
    ax.bar(index,data[i],bar_width,color=color[i],bottom=y_offset)#(x轴位置,每个灾难对应的数值,柱宽,柱子颜色,y轴柱状图起始位置)
    y_offset=y_offset+data[i]#画堆叠柱状图
    cell_text.append(['{:.1f}'.format(x) for x in y_offset])#保存堆叠柱状图对应的y轴数值

cell_text.reverse()#y轴数值翻转,匹配柱状图
colors_reverse=color[::-1,:]#颜色翻转,匹配柱状图

#画表格函数ax.table(表格内容,行标签,列标签,每行对应的颜色,表格放置的位置)
ax.table(cellText=cell_text,rowLabels=rows,colLabels=columns,rowColours=colors_reverse,loc='bottom')
plt.xticks([])
plt.ylabel('loss')
plt.title('loss by disaster')
plt.savefig('带有表格的柱状图.png', bbox_inches='tight')#tight避免出现保存图片不完整情形
plt.show()

3.图片展示

在这里插入图片描述


总结

数据读取的方式,堆叠图画法的思路,颜色细节的调整,即可画出一张在excel上能轻松画出带有表格数据的柱状图,哈哈哈哈哈

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值