阻止matplotlib绘图打开窗口(未调用plt.show())

6
我使用以下代码创建了一个图表,并将其保存到路径中。然而,图表在我没有明确调用plt.show()的情况下打开了一个新窗口。有人知道如何阻止窗口的打开吗?
arr1 = np.random.rand(150,500)
arr2 = np.random.rand(150,500)

fig = plt.figure()

a=fig.add_subplot(1,2,1)
imgplot = plt.imshow(arr1)
a.set_title('Image 1')
a.xaxis.set_visible(False)
a.yaxis.set_visible(False)

a=fig.add_subplot(2,2,1)
imgplot = plt.imshow(arr2)
a.set_title('Image 2')
a.xaxis.set_visible(False)
a.yaxis.set_visible(False)  

plt.savefig('C:/Users/.../fig.png', bbox_inches='tight')
2个回答

1
如果我理解您的问题,您想要保存绘图而不显示它,是吗?
为了做到这一点,您需要获取添加有您的图表的Canvas,然后将该画布输出为二进制字符串,并将其保存到文件中。下面的代码应该可以工作:
from matplotlib.backends.backend_agg import FigureCanvasAgg
from io import BytesIO

canvas = FigureCanvasAgg(my_figure)
image_content = BytesIO()
canvas.print_png(image_content, dpi=my_dpi_resolution)

# Now image_content has your image data, which you can write to a file:
open("my/file.png", "wb").write(image_content)

# This outputs PNG images but other formats are available (print_jpg or print_tif, for instance).

0

尝试使用%pylab inline -- 程序将不会再打开另一个窗口


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接