用anaconda编程:导入自制成绩表,划分一个子图,在右上角,占整个画布的4/9,绘制三条折线图,每条折线图的颜色,线性,数据标志均不相同,使用单独设置和fmt两种方式设置
时间: 2024-12-12 09:31:46 浏览: 3
在Anaconda环境中使用`matplotlib`创建这样的子图,可以采用`subplots`功能来分区画布。下面是一个具体的步骤:
1. 首先导入必要的库:
```python
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
```
2. 加载成绩数据:
```python
df_scores = pd.read_csv('scores.csv') # 假设数据在'scores.csv'文件中
```
3. 定义线条样式、颜色和数据标记:
```python
styles = ['-', '--', '-.'] # 线型
colors = ['b', 'g', 'r'] # 颜色
markers = ['o', 's', '^'] # 数据标记
```
4. 划分主图和子图:
```python
fig, ax_main = plt.subplots(figsize=(9, 6)) # 主图占据大部分空间
divider = make_axes_locatable(ax_main) # 分割主图
ax_sub = divider.append_axes("top", size="4%", pad=0.1) # 子图位于右上角,占据4/9
# 确保所有轴的X轴范围一致
xlim = df_scores['Time'].max() - df_scores['Time'].min()
# 将子图和主图共享X轴
ax_sub.xaxis.set_visible(False) # 隐藏子图的X轴
ax_sub.get_shared_x_axes().join(ax_main, ax_sub) # 调整X轴范围
```
5. 分别在子图上绘制三条折线图:
```python
for i, col in enumerate(df_scores.columns[1:]): # 假设除'时间'外有三个成绩列
ax_sub.plot(df_scores['Time'], df_scores[col], style=styles[i], color=colors[i], marker=markers[i], linestyle=None,
markersize=5, fmt=f'{colors[i]}{styles[i]}', label=col) # 使用'fmt'设置标记形式
# 添加标题和图例
ax_sub.set_title('Subplot: Performance Over Time')
ax_sub.legend(loc='upper left')
ax_sub.yaxis.tick_right() # 右侧放置Y轴标签
ax_sub.yaxis.grid(True)
# 根据需要调整子图的位置和边距
ax_sub.spines['top'].set_position(('axes', 1.04)) # 将顶部边框向上移动一点以避免覆盖主图的边界
```
6. 最后更新主图和显示图形:
```python
ax_main.set_xlim(xlim)
plt.tight_layout() # 自动调整子图和主图之间的间距
plt.show()
```
阅读全文