import matplotlib.pyplot as plt

# 数据
subjects = ['语文', '数学', '英语', '物理', '化学', '生物']
avg_grades_female = [94, 82, 89.5, 62, 49, 53]
avg_grades_male = [85.5, 91, 72, 59, 66, 55]

# 1. 绘制柱形图
plt.bar(subjects, avg_grades_female, label='女生')
plt.bar(subjects, avg_grades_male, label='男生')
plt.legend()
plt.title('高二男生、女生的平均成绩')
plt.xlabel('学科')
plt.ylabel('平均成绩(分)')
plt.show()

# 2. 绘制堆积柱形图
plt.bar(subjects, avg_grades_female, label='女生')
plt.bar(subjects, avg_grades_male, bottom=avg_grades_female, label='男生')
plt.legend()
plt.title('高二男生、女生的平均成绩')
plt.xlabel('学科')
plt.ylabel('平均成绩(分)')
plt.show()

# 3. 设置 y 轴的标签为'平均成绩(分)'
plt.bar(subjects, avg_grades_female, label='女生')
plt.bar(subjects, avg_grades_male, bottom=avg_grades_female, label='男生')
plt.legend()
plt.title('高二男生、女生的平均成绩')
plt.xlabel('学科')
plt.ylabel('平均成绩(分)')
plt.gca().set_ylabel('平均成绩(分)')
plt.show()

# 4. 设置 x 轴的刻度标签位于两组柱形中间
plt.bar(subjects, avg_grades_female, label='女生', width=-0.4, align='edge')
plt.bar(subjects, avg_grades_male, bottom=avg_grades_female, label='男生', width=0.4, align='edge')
plt.legend()
plt.title('高二男生、女生的平均成绩')
plt.xlabel('学科')
plt.ylabel('平均成绩(分)')
plt.gca().set_ylabel('平均成绩(分)')
plt.gca().set_xticks(range(len(subjects)))
plt.gca().set_xticklabels(subjects)
plt.show()

# 5. 添加标题为'高二男生、女生的平均成绩'
plt.bar(subjects, avg_grades_female, label='女生', width=-0.4, align='edge')
plt.bar(subjects, avg_grades_male, bottom=avg_grades_female, label='男生', width=0.4, align='edge')
plt.legend()
plt.title('高二男生、女生的平均成绩')
plt.xlabel('学科')
plt.ylabel('平均成绩(分)')
plt.gca().set_ylabel('平均成绩(分)')
plt.gca().set_xticks(range(len(subjects)))
plt.gca().set_xticklabels(subjects)
plt.show()

# 6. 添加图例
plt.bar(subjects, avg_grades_female, label='女生', width=-0.4, align='edge')
plt.bar(subjects, avg_grades_male, bottom=avg_grades_female, label='男生', width=0.4, align='edge')
plt.legend()
plt.title('高二男生、女生的平均成绩')
plt.xlabel('学科')
plt.ylabel('平均成绩(分)')
plt.gca().set_ylabel('平均成绩(分)')
plt.gca().set_xticks(range(len(subjects)))
plt.gca().set_xticklabels(subjects)
plt.show()

# 7. 向每个柱形的顶部添加注释文本,标注平均成绩。
plt.bar(subjects, avg_grades_female, label='女生', width=-0.4, align='edge')
plt.bar(subjects, avg_grades_male, bottom=avg_grades_female, label='男生', width=0.4, align='edge')
plt.legend()
plt.title('高二男生、女生的平均成绩')
plt.xlabel('学科')
plt.ylabel('平均成绩(分)')
plt.gca().set_ylabel('平均成绩(分)')
plt.gca().set_xticks(range(len(subjects)))
plt.gca().set_xticklabels(subjects)
for i, j in enumerate(avg_grades_female):
    plt.text(i-0.2, j+1, str(j))
for i, j in enumerate(avg_grades_male):
    plt.text(i+0.2, j+1, str(j))
plt.show()
Python绘制高二男生女生各学科平均成绩柱形图和堆积柱形图

原文地址: http://www.cveoy.top/t/topic/okE0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录