Necesito crear una figura en un archivo sin mostrarla en el cuaderno IPython. No tengo claro la interacción entre IPython
y matplotlib.pylab
en este sentido. Pero, cuando llamo a pylab.savefig("test.png")
la figura actual, se muestra además de guardarse en formato test.png
. Al automatizar la creación de un gran conjunto de archivos de trazado, a menudo esto no es deseable. O en el caso de que se desee un archivo intermedio para el procesamiento externo de otra aplicación.
No estoy seguro si se trata de una matplotlib
o IPython
pregunta portátil.
ioff
Respuestas:
Esta es una pregunta de matplotlib, y puede solucionar esto usando un backend que no se muestra al usuario, por ejemplo, 'Agg':
EDITAR: Si no desea perder la capacidad de mostrar gráficos, desactive el modo interactivo y solo llame
plt.show()
cuando esté listo para mostrar los gráficos:fuente
close()
yshow()
, que deberían resolver su problema. no se admite el cambio de backends sobre la marcha, como ha descubierto.plt.plot()
si el modo interactivo está activado . Desactivar el modo interactivo retrasa la visualización de los gráficos hastaplt.show()
. Debido a que está utilizando el cuaderno ipython, el modo interactivo se trata de manera diferente.matplotlib.use('Agg')
solo hizo el truco. No necesitaba ningunoplt.show()
oplt.ioff()
en mi código en absoluto.No lo necesitamos
plt.ioff()
oplt.show()
(si lo usamos%matplotlib inline
). Puede probar el código anterior sinplt.ioff()
.plt.close()
tiene el papel fundamental. Prueba este:Si ejecuta este código en iPython, mostrará un segundo gráfico, y si lo agrega
plt.close(fig2)
al final, no verá nada.En conclusión, si cierra la figura
plt.close(fig)
, no se mostrará.fuente
plt.ioff
me pongoRuntimeWarning: More than 20 figures have been opened...
.plt.close
resuelto.