Savefig genera una imagen en blanco
Estoy intentando guardar los gráficos que hago usando matplotlib; sin embargo, las imágenes se guardan en blanco.
Aquí está mi código:
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)
Y tessstttyyy.png está en blanco (también probé con .jpg)
Primero, ¿qué pasa cuando T0 is not None
? Lo probaría y luego ajustaría los valores a los que paso plt.subplot()
; tal vez pruebe con los valores 131, 132 y 133, o valores que dependen de si T0
existen o no.
En segundo lugar, después de que plt.show()
se llama, se crea una nueva figura. Para lidiar con esto, puedes
Llama
plt.savefig('tessstttyyy.png', dpi=100)
antes de llamarplt.show()
Guarde la figura que tiene ante usted
show()
llamandoplt.gcf()
a "obtener figura actual", luego podrá llamarsavefig()
a esteFigure
objeto en cualquier momento.
Por ejemplo:
fig1 = plt.gcf()
plt.show()
plt.draw()
fig1.savefig('tessstttyyy.png', dpi=100)
En su código, 'tesssttyyy.png' está en blanco porque está guardando la nueva figura, en la que no se ha trazado nada.
plt.show()
debería venir despuésplt.savefig()
Explicación: plt.show()
borra todo, por lo que cualquier cosa posterior sucederá en una nueva figura vacía