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()

堆叠图效果

Python+matplotlib实现堆叠图的绘制

可以看到有部分蓝色的数据被遮挡了,如果我们想全部展现,可以:

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()

Python+matplotlib实现堆叠图的绘制

可以看到Excel的数据源当中BO与PRICE和PERSONS的数字相差过大,如果做堆叠图的话,BO会将其他的都进行覆盖,无法显示好的效果:

Python+matplotlib实现堆叠图的绘制

因为数据相差实在太大,我们可以直接让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()

Python+matplotlib实现堆叠图的绘制

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()

Python+matplotlib实现堆叠图的绘制

二、波浪形堆叠图

labels=['战争','爱情','动画','动作','惊悚','剧情']
colors=['tan','violet','turquoise','tomato','teal','steelblue']
plt.stackplot(cnbodfgbsort.index,cnbodfgbsort.PRICE,cnbodfgbsort.PERSONS,cnbodfgbsort.points,labels=labels,colors=colors)

Python+matplotlib实现堆叠图的绘制

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)

Python+matplotlib实现堆叠图的绘制

三、加上数据标签

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()

Python+matplotlib实现堆叠图的绘制

来源:https://blog.csdn.net/wxfighting/article/details/123315504

标签:Python,matplotlib,堆叠图
0
投稿

猜你喜欢

  • 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
  • asp之家 网络编程 m.aspxhome.com