注:本文的所有数据请移步—— 参考数据
文章目录
- 一、水平堆叠图
- 二、波浪形堆叠图
- 三、加上数据标签
一、水平堆叠图 堆叠图其实就是柱状图的一种特殊形式
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()
【Phthon|Python matplotlib 堆叠图】堆叠图效果
![Phthon|Python matplotlib 堆叠图](https://img.it610.com/image/info8/a151a23a7dbd4fe1812a9bab373d6480.png)
文章图片
可以看到有部分蓝色的数据被遮挡了,如果我们想全部展现,可以:
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()
![Phthon|Python matplotlib 堆叠图](https://img.it610.com/image/info8/b3b4aae34c1449e183d72b96523fedcb.jpg)
文章图片
可以看到Excel的数据源当中BO与PRICE和PERSONS的数字相差过大,如果做堆叠图的话,BO会将其他的都进行覆盖,无法显示好的效果:
![Phthon|Python matplotlib 堆叠图](https://img.it610.com/image/info8/278abb5785f5477e8b6e27c6414feadf.png)
文章图片
因为数据相差实在太大,我们可以直接让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()
![Phthon|Python matplotlib 堆叠图](https://img.it610.com/image/info8/413c1d75bafd4e48864e2159951eb9b3.jpg)
文章图片
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()
![Phthon|Python matplotlib 堆叠图](https://img.it610.com/image/info8/c5309478e2c14dc898a7eaa235128bd4.png)
文章图片
二、波浪形堆叠图
labels=['战争','爱情','动画','动作','惊悚','剧情']
colors=['tan','violet','turquoise','tomato','teal','steelblue']
plt.stackplot(cnbodfgbsort.index,cnbodfgbsort.PRICE,cnbodfgbsort.PERSONS,cnbodfgbsort.points,labels=labels,colors=colors)
![Phthon|Python matplotlib 堆叠图](https://img.it610.com/image/info8/22cc6710252e412f801ad073faa252d3.jpg)
文章图片
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)
![Phthon|Python matplotlib 堆叠图](https://img.it610.com/image/info8/c49b9a70728a4558b7007e48f03cb694.jpg)
文章图片
三、加上数据标签
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()
![Phthon|Python matplotlib 堆叠图](https://img.it610.com/image/info8/b376e42c6a86466e82122b40d78aead3.jpg)
文章图片
推荐阅读
- Spring|Spring Boot data Jpa 开发随笔随记
- Java|不会数据结构(24张图让你彻底弄懂它,还不会你来打我!)
- mysql|mysql 手工报错注入_MYSQL手工注入(详细步骤)—(2)实战演练
- 数据库|布尔盲注!
- 机器学习|Numpy、Matplotlib、Pandas速成
- 机器学习|用Matplotlib绘制学生身高实例——直方图
- 机器学习|用Matplotlib绘制事物的变化情况实例——折线图
- MySQL|初始MySQL
- COMP9315 22T1