You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 22:48:17