matplotlib - with - Llamando a pylab.savefig sin pantalla en ipython
plt title python (2)
Esta es una pregunta matplotlib, y puede evitar esto utilizando un backend que no se muestra al usuario, por ejemplo, ''Agg'':
import matplotlib
matplotlib.use(''Agg'')
import matplotlib.pyplot as plt
plt.plot([1,2,3])
plt.savefig(''/tmp/test.png'')
EDITAR: Si no quiere perder la posibilidad de mostrar tramas, desactive el modo interactivo y solo llame a plt.show()
cuando esté listo para mostrar las tramas:
import matplotlib.pyplot as plt
# Turn interactive plotting off
plt.ioff()
# Create a new figure, plot into it, then close it so it never gets displayed
fig = plt.figure()
plt.plot([1,2,3])
plt.savefig(''/tmp/test0.png'')
plt.close(fig)
# Create a new figure, plot into it, then don''t close it so it does get displayed
plt.figure()
plt.plot([1,3,2])
plt.savefig(''/tmp/test1.png'')
# Display all "open" (non-closed) figures
plt.show()
Necesito crear una figura en un archivo sin mostrarlo en el cuaderno de IPython. No tengo clara la interacción entre IPython
y matplotlib.pylab
en este sentido. Pero, cuando llamo a pylab.savefig("test.png")
, se muestra la cifra actual además de guardarse en test.png
. Al automatizar la creación de un gran conjunto de archivos de trazado, esto a menudo es indeseable. O en la situación de que se desee un archivo intermedio para procesamiento externo por otra aplicación.
No estoy seguro de si se trata de una pregunta de cuaderno matplotlib
o IPython
.
No necesitamos plt.ioff()
o plt.show()
(si usamos %matplotlib inline
). Puede probar el código anterior sin plt.ioff()
. plt.close()
tiene el papel esencial. Prueba este:
%matplotlib inline
import pylab as plt
# It doesn''t matter you add line below. You can even replace it by ''plt.ion()'', but you will see no changes.
## plt.ioff()
# Create a new figure, plot into it, then close it so it never gets displayed
fig = plt.figure()
plt.plot([1,2,3])
plt.savefig(''test0.png'')
plt.close(fig)
# Create a new figure, plot into it, then don''t close it so it does get displayed
fig2 = plt.figure()
plt.plot([1,3,2])
plt.savefig(''test1.png'')
Si ejecuta este código en iPython, se mostrará un segundo gráfico, y si agrega plt.close(fig2)
al final del mismo, no verá nada.
En conclusión, si cierra figura por plt.close(fig)
, no se mostrará.