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

如何用Python绘制月度短期与长期CDF对比的12幅子图?

Python实现月度短期与长期CDF对比绘图指导

前提假设

假设你已将计算好的CDF数据整理为以下结构:

  • 短期CDF:字典short_term_cdfs,键为元组(year, month),值为包含两个数组的元组(x_vals, cdf_vals),其中x_vals是能源值分位点,cdf_vals是对应累积概率
  • 长期CDF:字典long_term_cdfs,键为月份(1-12),值为元组(x_vals, cdf_vals)

实现步骤与代码

1. 导入依赖库

import matplotlib.pyplot as plt
import numpy as np

2. 配置绘图基础设置

# 设置全局绘图风格
plt.style.use('seaborn-v0_8-whitegrid')
# 统一图尺寸
fig_width, fig_height = 10, 6

3. 循环生成12幅月度对比图

# 遍历1-12月
for month in range(1, 13):
    # 创建新画布
    fig, ax = plt.subplots(figsize=(fig_width, fig_height))
    
    # 绘制长期月度CDF(基准曲线)
    lt_x, lt_cdf = long_term_cdfs[month]
    ax.plot(lt_x, lt_cdf, color='black', linewidth=2, label=f'长期(14年合并)')
    
    # 筛选当前月份的所有短期CDF数据
    month_short_cdfs = [(y, cdf) for (y, m), cdf in short_term_cdfs.items() if m == month]
    # 生成区分年份的颜色映射
    colors = plt.cm.viridis(np.linspace(0, 1, len(month_short_cdfs)))
    
    # 绘制各年份短期CDF
    for idx, (year, (st_x, st_cdf)) in enumerate(month_short_cdfs):
        ax.plot(st_x, st_cdf, linestyle='--', color=colors[idx], label=f'{year}年')
    
    # 设置图标注
    ax.set_title(f'{month}月能源值CDF对比', fontsize=14)
    ax.set_xlabel('能源值', fontsize=12)
    ax.set_ylabel('累积概率', fontsize=12)
    # 图例放在图外避免遮挡
    ax.legend(bbox_to_anchor=(1.05, 1), loc='upper left')
    # 自动调整布局
    plt.tight_layout()
    
    # 保存高清图片(替换为你的存储路径)
    plt.savefig(f'{month}月CDF对比图.png', dpi=300, bbox_inches='tight')
    # 如需交互查看,取消下方注释
    # plt.show()
    # 关闭画布释放内存
    plt.close(fig)

关键细节说明

  • 曲线区分:用黑色实线标注长期CDF,虚线标注各年份短期CDF,通过颜色区分不同年份,确保对比逻辑清晰
  • 图例优化:将图例置于图外右上角,避免遮挡核心曲线
  • 内存管理:循环内调用plt.close(fig),避免批量绘图时出现内存泄漏
  • 保存设置:bbox_inches='tight'确保图例不会被截断,dpi=300保证图片高清

内容的提问来源于stack exchange,提问作者Jawairia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 17:00:17