在python中已知实验中学举行了期中考试,考试后分别计算了全体男生,女生6科各科的平均成绩,绘制柱形图,柱形图的x轴为学科,y轴为平均成绩。绘制堆积柱形图,堆积柱形图的x轴为学科,y轴为平均成绩
时间: 2024-10-10 12:17:01 浏览: 50
在Python中,你可以使用matplotlib库来创建这种类型的柱状图,尤其是堆积柱状图。首先,你需要准备好男生和女生的成绩数据,假设数据存储在一个字典或pandas DataFrame中,每种性别对应一门学科有一个列表或Series包含学生的分数。
```python
import matplotlib.pyplot as plt
import numpy as np
# 假设你的数据结构如下
male_scores = {subject: [score1, score2, ...] for subject in subjects}
female_scores = {subject: [score1, score2, ...] for subject in subjects}
# 计算平均分
male_averages = {subject: np.mean(scores) for subject, scores in male_scores.items()}
female_averages = {subject: np.mean(scores) for subject, scores in female_scores.items()}
# 创建堆积柱状图
fig, ax = plt.subplots()
width = 0.4
for gender, averages in zip(['Male', 'Female'], [male_averages, female_averages]):
x = list(averages.keys())
y = list(averages.values())
ax.bar(x, y, label=gender, width=width, bottom=(0 if gender == 'Male' else y))
ax.set_xlabel('学科')
ax.set_ylabel('平均成绩')
ax.set_title('期中考试学科平均成绩比较')
ax.legend()
plt.show()
```
在这个例子中,`x`轴表示学科,`y`轴代表平均成绩,每次添加新数据(男性或女性的成绩)时,都会在原有的基础上“堆积”一个新的柱子,显示出各自性别所有学科成绩的总和。
阅读全文