哈喽,大家晚上好,今天给大家介绍一下如何利用matplotlib绘制叠加柱状图,大概样子长这样:
目的:将三门成绩通过叠加柱状图进行展现
1.导入数据:
import pandas as pd
df=pd.read_excel('成绩表.xlsx')
2.设置中文标签正常显示:
这一步是为了让坐标轴的中文标签能够正常显示:
from matplotlib.font_manager import FontProperties
plt.rcParams['font.sans-serif'] = ['Songti SC']
3.将第一列数据以柱状图形式显示:
首先我们将语文成绩按照柱形图进行展示,高度为语文成绩,x轴显示的是姓名列:
plt.bar(x=df.姓名,height=df.语文,color='red',width=0.8)
4.将数学列进行叠加显示:
1)首先设置x轴的坐标位置:
import numpy as np
x=np.arange(3)
2)高度为数学成绩所对应的数据:
height=df.数学
3)通过bottom设置叠加效果:
bottom代表着y轴所在的坐标,应该摞在原本的语文成绩之上,因此这样写:
bottom=df.语文
4)数学成绩的代码如下:
plt.bar(x=np.arange(3),height=df.数学,bottom=df.语文,color='blue',
width=0.8)
5.英语成绩叠加显示:
与数学成绩的计算方法大同小异,不同的是注意bottom需要在前两个数据再次进行叠加:
plt.bar(x=np.arange(3),height=df.英语,bottom=df.语文 df.数学,
color='yellow',width=0.8)
6.添加图例:
分别在各科目中加入标签:
plt.bar(x=df.姓名,height=df.语文,color='red',width=0.8,label='语文')
plt.bar(x=np.arange(3),height=df.数学,bottom=df.语文,color='blue',
width=0.8,label='数学')
plt.bar(x=np.arange(3),height=df.英语,bottom=df.语文 df.数学,
color='yellow',width=0.8,label='英语')
plt.legend()
好了,今天的文章就先到这里了,明天见!