matplotlib根据自制成绩表绘制柱形图,柱形图要求x轴刻度对应在三根柱的中间位置,且x坐标轴显示学号(tick_labels)
时间: 2024-10-13 08:15:10 浏览: 65
Matplotlib是一个强大的数据可视化库,在Python中常用于创建各种图表,包括柱状图。如果你想根据自制的成绩表绘制柱状图,并且要求x轴刻度位于三根柱子的中间位置,以及设置特定的学号(tick_labels),可以按照以下步骤操作:
1. 首先,安装matplotlib库,如果还没有安装,可以使用`pip install matplotlib`命令。
2. 导入需要的模块:
```python
import matplotlib.pyplot as plt
import numpy as np
```
3. 创建一个成绩列表,假设学号是连续的整数,成绩数据存储在一个字典或二维数组中:
```python
scores = {
'学号1': [85, 90],
'学号2': [78, 82],
'学号3': [92, 96],
# ...其他学生成绩...
}
```
4. 将学号作为索引,成绩作为值:
```python
index = list(scores.keys())
values = [sum(score) for score in scores.values()] # 计算平均成绩
```
5. 使用`plt.bar`函数创建柱状图,设定x坐标位置为学号的一半加或减一个偏移量,以便居中:
```python
bar_width = 0.5 # 柱宽
offset = 0.25 # 中间偏移
fig, ax = plt.subplots()
ax.bar(index + offset, values, bar_width, label='平均成绩')
# 设置x轴刻度标签
ax.set_xticks(index)
ax.set_xticklabels(index)
# 显示学号
plt.xticks(rotation=45) # 标签旋转防止过于拥挤
# 其他美化设置,如标题、网格线等
plt.title('学生平均成绩柱状图')
plt.grid(True)
plt.xlabel('学号')
plt.ylabel('平均成绩')
plt.legend()
# 显示图形
plt.show()
```
阅读全文