Preciso criar uma figura em um arquivo sem exibi-la no notebook IPython. Não estou claro sobre a interação entre IPython
e a matplotlib.pylab
esse respeito. Mas, quando ligo, pylab.savefig("test.png")
o valor atual é exibido, além de ser salvo em test.png
. Ao automatizar a criação de um grande conjunto de arquivos de plotagem, isso geralmente é indesejável. Ou na situação em que um arquivo intermediário para processamento externo por outro aplicativo seja desejado.
Não tenho certeza se esta é uma pergunta do matplotlib
ou do IPython
caderno.
ioff
Respostas:
Esta é uma questão matplotlib, e você pode contornar isso usando um back-end que não é exibido para o usuário, por exemplo, 'Agg':
EDITAR: Se você não quiser perder a capacidade de exibir gráficos, desative o modo interativo e só chame
plt.show()
quando estiver pronto para exibir os gráficos:fonte
close()
eshow()
, que devem resolver seu problema. alterar back-ends em tempo real não é suportado, como você descobriu.plt.plot()
se o modo interativo estiver ativado . Desligar o modo interativo atrasa a exibição de qualquer plotagem atéplt.show()
. Como você está usando o notebook ipython, o modo interativo é tratado de maneira diferente.matplotlib.use('Agg')
sozinha fez o truque. Eu não precisava de qualquerplt.show()
ouplt.ioff()
no meu código em tudo.Não precisamos
plt.ioff()
ouplt.show()
(se usarmos%matplotlib inline
). Você pode testar o código acima semplt.ioff()
.plt.close()
tem o papel essencial. Tente este:Se você executar este código no iPython, ele exibirá um segundo gráfico e, se você adicionar
plt.close(fig2)
ao final dele, não verá nada.Em conclusão, se você fechar a figura
plt.close(fig)
, ela não será exibida.fonte
plt.ioff
eu entendoRuntimeWarning: More than 20 figures have been opened...
.plt.close
Resolvi-o.