import pandas as pd
import matplotlib.pyplot as plt
# 设置图形中使用中文字体
plt.rcParams['font.sans-serif'] = ['simhei']
# 每门课程的成绩
scores = {'数据结构':[89,70,49,87,92,84,73,71,78,81,90,37,
77,82,81,79,80,82,75,90,54,80,70,68,61],
'线性代数':[70,74,80,60,50,87,68,77,95,80,79,74,
69,64,82,81,78,90,78,79,72,69,45,70,70],
'英语':[83,87,69,55,80,89,96,81,83,90,54,70,79,
66,85,82,88,76,60,80,75,83,75,70,20],
'Python':[90,60,82,79,88,92,85,87,89,71,45,50,
80,81,87,93,80,70,68,65,85,89,80,72,75]}
scores = pd.DataFrame(scores)
# 创建4个子图
fig, axs = plt.subplots(2, 2)
axs.shape = (4,)
# 依次在4个子图中绘制每门课程的饼状图
for index, column in enumerate(scores.columns):
pd.cut(scores[column], bins=[0,60,85,101],
labels=['不及格','及格','优'],
right=False).value_counts().plot(kind='pie', ax=axs[index],
explode=(0, 0, 0.2),
pctdistance=0.7, shadow=True,
autopct='%1.1f%%')
axs[index].set_ylabel(column)
# 创建一个共用的图例
plt.legend(loc='upper right', bbox_to_anchor=(1.3, 2.4))
plt.show()