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

如何让Matplotlib中的两组绘图显示在独立画布中?

解决Matplotlib独立画布绘制问题

你的代码核心错误很明显:创建fig2之后,你居然用fig1.add_subplot(1, 1, 1)来生成ax2,这等于把第二组绘图还是绑定到了fig1的画布上,自然无法得到独立的第二个画布。

修正后的代码如下:

import matplotlib.pyplot as plt

# 第一幅独立画布
fig1 = plt.figure(1)
ax1 = fig1.add_subplot(1, 1, 1)
ax1.plot(df['Time'], df['srh_1000m'], label='SRH')
ax1.plot(df['Time'], df['SRH_5mov_avg'], label='5 min MA')
ax1.plot(df['Time'], df['SRH_10mov_avg'], label='10 min MA')
ax1.plot(df['Time'], df['SRH_15mov_avg'], label='15 min MA')
ax1.plot(df['Time'], df['SRH_30mov_avg'], label='30 min MA')
ax1.legend()  # 建议加上图例,方便区分曲线
fig1.savefig('SRH_mov_avgs', bbox_inches='tight')
fig1.show()

# 第二幅独立画布
fig2 = plt.figure(2)
ax2 = fig2.add_subplot(1, 1, 1)  # 这里要改成fig2.add_subplot!
ax2.plot(df['Time'], df['srh_1000m'], label='SRH')
ax2.plot(df['Time'], df['SRH_5mov_avg'], label='5 min MA')
ax2.legend(loc='upper center', bbox_to_anchor=(0.5, -0.225), fontsize='small', ncol=3)
fig2.savefig('SRH_5mov_avg', bbox_inches='tight')
fig2.show()

额外提醒两个细节:

  • 如果是在非交互式脚本环境运行,最后可以加上plt.close('all')关闭所有画布,避免不必要的内存占用
  • 第一幅图添加图例后,多条移动平均线的差异会更直观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:25:36