Matplotlib图表图例过多、数值过小需放大问题求助(Python/Jupyter Lab)
时间序列平稳性检验图表问题排查与解决
一、图例过多的原因及解决
1. 函数内部重复添加图例
如果你的test_stationarity函数在绘制折线时,每次循环或子图绘制都调用了plt.legend(),会导致图例重复堆积。比如循环绘制滚动统计量时,每画一条线就加一次图例,最终出现大量重复条目。
- 修复方式:
统一在所有绘图完成后调用一次plt.legend(),或者给每个唯一序列指定一次标签:# 错误示例(重复添加图例) for col in ['rolling_mean', 'rolling_std']: plt.plot(df[col], label=col) plt.legend() # 每次循环都调用,导致图例重复 # 正确示例 for col in ['rolling_mean', 'rolling_std']: plt.plot(df[col], label=col) plt.legend() # 仅在所有线绘制完成后调用一次
2. 子图各自添加图例导致冗余
如果函数创建了多个子图(比如原序列、滚动均值、滚动标准差分开展示),每个子图都单独添加图例,会出现多处重复图例。
- 修复方式:
只在核心子图添加图例,或者用fig.legend()为整个画布统一设置图例,避免子图各自添加。
二、图表数值过小、折线看不清的原因及解决
1. 默认画布尺寸不足
Jupyter Lab中matplotlib默认画布尺寸偏小,导致整体图表紧凑,折线细节被压缩。
- 修复方式:
绘图前手动设置画布尺寸:plt.figure(figsize=(12, 8)) # 宽12英寸、高8英寸,可按需调整
2. 子图布局间距不合理
用plt.subplots()创建多子图时,默认间距过小,每个子图的展示空间被挤压。
- 修复方式:
用plt.tight_layout()自动调整布局,或手动设置子图间距:fig, axes = plt.subplots(3, 1, figsize=(12, 10)) # 绘制各子图逻辑... plt.tight_layout() # 自动优化子图间距 # 或者手动调整垂直间距 plt.subplots_adjust(hspace=0.4)
3. 折线宽度设置过细
默认折线宽度较窄,在小画布上容易模糊不清。
- 修复方式:
绘制折线时指定linewidth参数:plt.plot(df['original_series'], label='原始序列', linewidth=2)
额外优化建议
- 检查
test_stationarity函数的绘图逻辑,确认是否存在重复调用图例、未设置画布尺寸的问题。 - 若使用seaborn,可通过调整上下文风格放大图表元素:
import seaborn as sns sns.set_context("talk") # 增大图表文字、线条的显示尺寸
内容的提问来源于stack exchange,提问作者Cutie
相关产品推荐
相关产品推荐

