根据自制成绩表绘制堆积柱形图每根柱为一个学生的三科成绩,且x坐标轴显示学号(tick_labels)
时间: 2024-10-10 19:03:10 浏览: 34
在Python的Matplotlib库中,你可以使用`bar()`函数配合Pandas数据结构来绘制这样的堆积柱状图。首先,你需要有包含学号、学生姓名和各科成绩的数据框。假设我们有一个名为df的DataFrame,其中包含字段'StudentID', 'Subject1', 'Subject2', 'Subject3'。
下面是一个简单的步骤指南:
1. **导入所需的库**:
```python
import matplotlib.pyplot as plt
import pandas as pd
```
2. **准备数据**:
确保你的数据按学号排序,并整理成适合堆叠的格式。
3. **创建图形并设置基础参数**:
```python
fig, ax = plt.subplots()
```
4. **读取数据并计算累计分数**:
```python
df['Total'] = df.iloc[:, 1:].sum(axis=1) # 将各科成绩相加得到总分
```
5. **绘制堆积柱状图**:
```python
stacked_data = df.set_index('StudentID')[['Subject1', 'Subject2', 'Subject3', 'Total']].stack()
stacked_data.plot(kind='bar', stacked=True, ax=ax, xticks=df.index)
```
6. **添加标签和标题**:
```python
ax.set_xlabel('学号 (tick_labels)')
ax.set_ylabel('成绩')
ax.set_title('学生各科目成绩堆积柱状图')
ax.legend(title='科目', labels=['科目1', '科目2', '科目3', '总分'])
```
7. **显示图形**:
```python
plt.show()
```
阅读全文