mplfinance plot外调用savefig不保存、无法后续自定义绘图元素问题
单独调用savefig不生效的原因
mplfinance的fplt.plot()默认执行完成后会自动关闭当前画布实例,没有在plot参数内配置savefig规则时,绘图相关的资源会直接释放,后续调用fplt.savefig()找不到对应的画布对象,因此保存失败。
实现绘图后修改元素再保存的方案
核心是通过returnfig=True参数保留绘图资源,拿到画布和坐标轴对象后再做自定义修改,最后手动保存即可,完整示例代码如下:
# 调用plot时添加returnfig=True参数,获取画布、坐标轴对象 fig, axlist = fplt.plot( dft, type="candle", style='charles', addplot=extraPlot2, ylabel=stock, figratio=(10, 6), volume=True, returnfig=True # 关键参数:禁止自动销毁画布,返回绘图对象 ) # 自定义修改绘图元素,axlist[0]对应K线主图坐标轴,axlist[1]对应成交量子图坐标轴 # 设置x轴标签 axlist[0].set_xlabel("Blah") # 调整x轴刻度旋转角度 axlist[0].tick_params(axis='x', rotation=45) # 其他自定义调整都可以通过操作fig、axlist对象实现 # 用画布对象直接保存图片 fig.savefig(folder2, bbox_inches="tight") # 保存完成后手动关闭画布释放资源 fplt.close()
注意事项
不要直接调用fplt.xlabel()这类和matplotlib.pyplot同名的全局方法,mplfinance没有封装这类全局操作,直接用返回的axes对象调用原生matplotlib方法,可以避免属性不生效的问题。
内容的提问来源于stack exchange,提问作者TameAim
相关产品推荐
相关产品推荐

