Matplotlib(pyplot)的savefig输出空白的图片。

11 浏览
0 Comments

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也是同样的结果)。

admin 更改状态以发布 2023年5月24日
0
0 Comments

plt.show()应该在plt.savefig()之后调用。

解释: plt.show()清除整个图像,因此之后发生的任何事情都将在一个新的空图像上发生。

0
0 Comments

首先,当T0不为None时会发生什么?我会进行测试,然后调整传递给plt.subplot()的值;例如尝试值131、132和133,或者取决于T0是否存在的值。

其次,在调用plt.show()后,会创建一个新的图。为了处理这个问题,你可以

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

  2. 通过调用plt.gcf()来保存图像,然后在任何时候都可以调用savefig()这个Figure对象。

例如:

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

在你的代码中,'tesssttyyy.png'是空的,因为它保存了新的图,还没有绘制任何内容。

0