在 matplotlib 中 .imshow() 之后保存子图

she*_*lih 3 python visualization matplotlib subplot

这是我的可视化代码:

f, ax = plt.subplots(1, 2)
for i, img in enumerate([img1, img2]):    
    grads = # my visualization codes
# visualize grads as heatmap
ax[i].imshow(grads, cmap='jet')
Run Code Online (Sandbox Code Playgroud)

我怎么能保存imshow这里显示的内容?任何意见是极大的赞赏!

mos*_*gen 5

保存整个图形很简单,只需使用savefig函数:

f.savefig('filename.png')
Run Code Online (Sandbox Code Playgroud)

您可以保存多种文件格式,通常可以从文件名的扩展名中正确推断出这些格式。有关更多信息,请参阅文档

savefig函数接受一个参数bbox_inches,该参数定义要保存的图形区域。要将单个子图保存到文件,您可以使用子图Axes对象的边界框来计算适当的值。

将它们放在一起,您的代码将如下所示:

f, ax = plt.subplots(1, 2)
for i, img in enumerate([img1, img2]):    
    grads = # my visualization codes
    # visualize grads as heatmap
    ax[i].imshow(grads, cmap='jet')

    # Save the subplot.
    bbox = ax[i].get_tightbbox(f.canvas.get_renderer())
    f.savefig("subplot{}.png".format(i),
              bbox_inches=bbox.transformed(f.dpi_scale_trans.inverted()))

# Save the whole figure.
f.savefig("whole_figure.png")
Run Code Online (Sandbox Code Playgroud)