Savefig genera una imagen en blanco

Resuelto tylerthemiler asked hace 12 años • 5 respuestas

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)

tylerthemiler avatar Jan 26 '12 07:01 tylerthemiler
Aceptado

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 T0existen o no.

En segundo lugar, después de que plt.show()se llama, se crea una nueva figura. Para lidiar con esto, puedes

  1. Llama plt.savefig('tessstttyyy.png', dpi=100)antes de llamarplt.show()

  2. Guarde la figura que tiene ante usted show()llamando plt.gcf()a "obtener figura actual", luego podrá llamar savefig()a este Figureobjeto 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.

Yann avatar Jan 26 '2012 01:01 Yann

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

JAG2024 avatar Nov 17 '2017 03:11 JAG2024