问题描述
我正在尝试保存使用 matplotlib 绘制的图;但是,图像保存为空白.
I am trying to save plots I make using matplotlib; however, the images are saving blank.
这是我的代码:
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)
And tessstttyyy.png is blank (also tried with .jpg)
推荐答案
首先,当T0不是None
时会发生什么?我会测试它,然后我会调整我传递给 plt.subplot()
的值;也许尝试值 131、132 和 133,或者取决于 T0
是否存在的值.
First, what happens when T0 is not None
? I would test that, then I would adjust the values I pass to plt.subplot()
; maybe try values 131, 132, and 133, or values that depend whether or not T0
exists.
其次,在调用 plt.show()
之后,会创建一个新图形.要解决这个问题,您可以
Second, after plt.show()
is called, a new figure is created. To deal with this, you can
在调用
plt.show()
在你show()
之前通过调用plt.gcf()
获取当前图形"来保存图形,然后你可以调用savefig()
随时在这个 Figure
对象上.
Save the figure before you show()
by calling plt.gcf()
for "get current figure", then you can call savefig()
on this Figure
object at any time.
例如:
fig1 = plt.gcf()
plt.show()
plt.draw()
fig1.savefig('tessstttyyy.png', dpi=100)
在您的代码中,tesssttyyy.png"是空白的,因为它正在保存尚未绘制任何内容的新图形.
In your code, 'tesssttyyy.png' is blank because it is saving the new figure, to which nothing has been plotted.
这篇关于Matplotlib (pyplot) savefig 输出空白图像的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!