能否提供一个具体的例子,说明一个包含学生成绩的图表,它展示了数学、英语和语文科目的分数分布情况?
时间: 2024-12-29 11:31:30 浏览: 8
当然可以,我们可以使用Python的matplotlib库来创建这样一个条形图。假设我们有一个名为`scores`的字典,其中键是学生姓名,值是他们三个科目的成绩,例如:
```python
scores = {
'小明': {'math': 85, 'english': 90, 'chinese': 92},
'小红': {'math': 78, 'english': 86, 'chinese': 89},
'小刚': {'math': 92, 'english': 95, 'chinese': 90},
# 更多学生...
}
```
接下来,我们可以创建这个图表:
```python
import matplotlib.pyplot as plt
import numpy as np
# 提取每个科目数据
math_scores = [score['math'] for score in scores.values()]
english_scores = [score['english'] for score in scores.values()]
chinese_scores = [score['chinese'] for score in scores.values()]
# 设置颜色
colors = ['#E31A1C', '#33A02C', '#FF7F00']
# 创建条形图
fig, (math_axis, english_axis, chinese_axis) = plt.subplots(1, 3, figsize=(12, 4), sharey=True)
# 数学
math_axis.bar(range(len(math_scores)), math_scores, color=colors[0])
math_axis.set_xticks(range(len(scores)))
math_axis.set_xticklabels(scores.keys(), rotation=45, ha='right')
math_axis.set_title('数学')
# 英语
english_axis.bar(range(len(english_scores)), english_scores, color=colors[1])
english_axis.set_title('英语')
# 语文
chinese_axis.bar(range(len(chinese_scores)), chinese_scores, color=colors[2])
chinese_axis.set_title('语文')
# 添加网格线
for ax in [math_axis, english_axis, chinese_axis]:
ax.grid(axis='y')
# 展示图表
plt.tight_layout()
plt.show()
```
这个例子会分别展示数学、英语和语文三个科目的分数分布,并以学生的姓名作为x轴标签。
阅读全文