导入自制成绩表,划分一个子图,在右上角,占整个画布的4/9,绘制三条折线图
时间: 2024-12-14 07:27:20 浏览: 9
在Python中,你可以使用matplotlib库来创建这样的图表。首先,你需要导入必要的模块,如pandas处理数据,matplotlib用于绘图,以及numpy可能用于数据计算。假设你的成绩数据存储在一个名为`scores_data.csv`的文件里,并且已经通过pandas读取到了DataFrame `df`。
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 1. 导入自制成绩表
df = pd.read_csv('scores_data.csv')
# 检查数据是否包含所需列,例如 'Student', 'Subject1', 'Subject2', etc.
assert 'Student' in df.columns and ('Subject1' in df.columns or 'Subject1' in df.columns), "数据中需要有学生名和科目分数"
# 2. 划分子图 - 使用subplot或gridspec
fig, ax = plt.subplots(figsize=(9, 6)) # 创建一个新的figure并指定大小
gs = fig.add_gridspec(3, 3) # 如果你想更精确控制子图位置,可以使用GridSpec
# 将右侧上角区域设置为子图
ax = fig.add_subplot(gs[1:, :2]) # 右上角是第2行,前两列
# 3. 绘制折线图 - 假设Subject1, Subject2等是列名
for subject, data in df.groupby('Student'):
ax.plot(data['Time'], data[subject], label=subject)
# 设置轴标签、标题和图例
ax.set_xlabel('时间')
ax.set_ylabel('成绩')
ax.set_title('学生各科成绩分布')
ax.legend()
# 调整比例
ax.set_aspect('equal') # 确保x和y的比例相等
ax.set_position([0.58, 0.5, 0.4 / 3., 0.4 / 3.]) # 子图占据总面积的4/9,调整位置到右上角
plt.show()
```
阅读全文