Python+matplotlib实现堆叠图的绘制
作者:渴望成为寂寞胜者 时间:2023-07-21 17:38:35
注:本文的所有数据请移步—— 参考数据
一、水平堆叠图
堆叠图其实就是柱状图的一种特殊形式
from matplotlib import pyplot as plt
plt.style.use('seaborn')
plt.figure(figsize=(15,9))
plt.rcParams.update({'font.family': "Microsoft YaHei"})
plt.title("中国票房2021TOP9")
plt.bar(cnbodfgbsort.index,cnbodfgbsort.PERSONS)
plt.bar(cnbodfgbsort.index,cnbodfgbsort.PRICE)
plt.bar(cnbodfgbsort.index,cnbodfgbsort.points)
plt.show()
堆叠图效果
可以看到有部分蓝色的数据被遮挡了,如果我们想全部展现,可以:
index_x=np.arange(len(cnbodfgbsort.index))
index_x
w=0.15
from matplotlib import pyplot as plt
plt.style.use('classic')
plt.figure(figsize=(15,9))
plt.rcParams.update({'font.family': "Microsoft YaHei"})
plt.title("中国票房2021TOP9")
plt.bar(index_x,cnbodfgbsort.PERSONS,width=w)
plt.bar(index_x+w,cnbodfgbsort.PRICE,width=w)
plt.bar(index_x+2*w,cnbodfgbsort.points,width=w)
plt.show()
可以看到Excel的数据源当中BO与PRICE和PERSONS的数字相差过大,如果做堆叠图的话,BO会将其他的都进行覆盖,无法显示好的效果:
因为数据相差实在太大,我们可以直接让BO除以1000:
from matplotlib import pyplot as plt
plt.style.use('classic')
plt.figure(figsize=(15,9))
plt.rcParams.update({'font.family': "Microsoft YaHei"})
plt.title("中国票房2021TOP9")
plt.bar(cnbodfgbsort.index,cnbodfgbsort.PERSONS)
plt.bar(cnbodfgbsort.index,cnbodfgbsort.PRICE)
plt.bar(cnbodfgbsort.index,cnbodfgbsort.BO/1000)
plt.bar(cnbodfgbsort.index,cnbodfgbsort.points)
plt.show()
from matplotlib import pyplot as plt
plt.style.use('classic')
plt.figure(figsize=(15,9))
plt.rcParams.update({'font.family': "Microsoft YaHei"})
plt.title("中国票房2021TOP9")
plt.bar(index_x-w,cnbodfgbsort.BO/1000,width=w) # 直接让BO除以1000
plt.bar(index_x,cnbodfgbsort.PERSONS,width=w)
plt.bar(index_x+w,cnbodfgbsort.PRICE,width=w)
plt.bar(index_x+2*w,cnbodfgbsort.points,width=w)
plt.show()
二、波浪形堆叠图
labels=['战争','爱情','动画','动作','惊悚','剧情']
colors=['tan','violet','turquoise','tomato','teal','steelblue']
plt.stackplot(cnbodfgbsort.index,cnbodfgbsort.PRICE,cnbodfgbsort.PERSONS,cnbodfgbsort.points,labels=labels,colors=colors)
labels=['战争','爱情','动画','动作','惊悚','剧情']
colors=['tan','violet','turquoise','tomato','teal','steelblue']
plt.stackplot(cnbodfgbsort.index,cnbodfgbsort.PRICE,cnbodfgbsort.BO/900,cnbodfgbsort.PERSONS,cnbodfgbsort.points,labels=labels,colors=colors)
三、加上数据标签
plt.legend()
labels=['票房','票价','人次','评分']
colors=['tan','violet','turquoise','tomato','teal','steelblue']
plt.stackplot(cnbodfgbsort.index,cnbodfgbsort.PRICE,cnbodfgbsort.BO/900,cnbodfgbsort.PERSONS,cnbodfgbsort.points,labels=labels,colors=colors)
plt.legend()
来源:https://blog.csdn.net/wxfighting/article/details/123315504
标签:Python,matplotlib,堆叠图


猜你喜欢
Python使用matplotlib绘制多个图形单独显示的方法示例
2022-02-13 09:45:44

去掉运行JavaScript时IE产生的警告栏
2008-09-11 18:07:00

Golang中互斥锁和读写互斥锁原理及示例代码
2024-05-29 22:06:52
asp如何同时处理数据库和页面错误?
2010-06-07 20:58:00
在WIN命令提示符下mysql 用户新建、授权、删除,密码修改
2024-01-17 23:34:48
python利用插值法对折线进行平滑曲线处理
2023-10-15 14:48:08

ASP压缩ACCESS数据库实例
2009-01-19 11:47:00
SQL查询中需要使用别名问题
2024-01-21 13:45:50
微信小程序单选框自定义赋值
2024-04-18 09:49:50
MySQL存储过程的概念与用法实例
2024-01-20 07:45:30

mysql并发控制原理知识点
2024-01-24 15:21:46

对python中的six.moves模块的下载函数urlretrieve详解
2023-10-20 00:23:45

python新手学习使用库
2021-06-20 13:08:38
SQLSERVERS 数据整理方法
2024-01-13 11:09:44
bat和python批量重命名文件的实现代码
2023-10-07 02:11:53
找到一种不错的从SQLServer转成Mysql数据库的方法
2024-01-17 02:13:09
vue+vux实现移动端文件上传样式
2024-05-02 16:34:40

sqlserver 存储过程分页(按多条件排序)
2024-01-23 15:56:31
浅谈Python脚本开头及导包注释自动添加方法
2021-04-22 06:21:22

Python爬取12306车次信息代码详解
2022-05-19 03:42:00
