如何让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
相关产品推荐
相关产品推荐

