保存图像输出空白图像
我正在尝试保存我用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格式)
5 个回答
37
调整函数的顺序解决了我的问题:
- 首先 保存 图表
- 然后 显示 图表
如下所示:
plt.savefig('heatmap.png')
plt.show()
268
plt.show()
应该在 plt.savefig()
之后使用
解释:plt.show()
会清空当前的图形,所以在它之后的任何操作都会在一个新的空白图形上进行
501
首先,当 T0 is not None
时会发生什么呢?我会先测试一下这个情况,然后调整我传给 plt.subplot()
的参数;可以尝试 131、132 和 133 这些值,或者根据 T0
是否存在来决定传什么值。
其次,在调用 plt.show()
之后,会创建一个新的图形。为了处理这个问题,你可以:
在调用
plt.show()
之前,先调用plt.savefig('tessstttyyy.png', dpi=100)
来保存图形。在显示图形之前先保存,可以通过调用
plt.gcf()
来获取当前图形,然后在这个Figure
对象上随时调用savefig()
。
举个例子:
fig1 = plt.gcf()
plt.show()
plt.draw()
fig1.savefig('tessstttyyy.png', dpi=100)
在你的代码中,'tesssttyyy.png' 是空白的,因为它保存的是新的图形,而这个图形上什么都没有绘制。