import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
men_means = (85.5,91.0,72.0,59.0,66.0,55.0)
women_means = (94.0,82.0,89.5,62.0,49.0,53.0)
x = np.arange(len(men_means)) # 每组柱形的 x 位置
width = 0.3 # 各柱形的宽度
fig = plt.figure()
ax = fig.add_subplot(111)
ax.bar(x - width / 2, men_means, width, label='男生')
ax.bar(x+width / 2, women_means, width, label='女生')
ax.set_title(' 高二男生、女生平均成绩')
ax.set_ylabel('平均成绩(分)')
ax.set_xticks(x)
ax.set_xticklabels(['语文', '数学', '英语', '物理', '化学', '生物'])
# 添加参考线
ax.axhline(88.5, ls='-', linewidth=1.0, label='全体平均成绩')
ax.legend(loc="upper right")
# 添加无指向型注释文本
for x,men_means,women_means in zip(x,men_means,women_means):
plt.text(x-width/2,men_means+1,men_means,ha='center',fontsize=9)
plt.text(x+width/2,women_means+1,women_means,ha='center',fontsize=9)
plt.show()