Matplotlib(pyplot)savefig输出空白图像

我试图保存使用matplotlib制作的图表; 但是,图像保存为空白。

这是我的代码:

plt.subplot(121) plt.imshow(dataStack, cmap=mpl.cm.bone) plt.subplot(122) y = copy.deepcopy(tumorStack) y = np.ma.masked_where(y == 0, y) plt.imshow(dataStack, cmap=mpl.cm.bone) plt.imshow(y, cmap=mpl.cm.jet_r, interpolation='nearest') if T0 is not None: plt.subplot(123) plt.imshow(T0, cmap=mpl.cm.bone) #plt.subplot(124) #Autozoom #else: #plt.subplot(124) #Autozoom plt.show() plt.draw() plt.savefig('tessstttyyy.png', dpi=100) 

而tessstttyyy.png是空白的(也试图用.jpg)

首先,当T0 is not None时会发生什么? 我会testing,然后我会调整我传递给plt.subplot() ; 也许尝试值131,132和133,或取决于T0是否存在的值。

其次,调用plt.show()之后,会创build一个新graphics。 为了解决这个问题,你可以

  1. 在调用plt.savefig('tessstttyyy.png', dpi=100)之前调用plt.savefig('tessstttyyy.png', dpi=100) plt.show()

  2. show()之前通过调用plt.gcf()获取当前graphics来保存graphics,然后可以随时调用此Figure对象上的savefig()

例如:

 fig1 = plt.gcf() plt.show() plt.draw() fig1.savefig('tessstttyyy.png', dpi=100) 

在你的代码中,“tesssttyyy.png”是空白的,因为它保存了没有任何内容的新图。

plt.show()应该在plt.savefig()之后plt.savefig()