Todos eles fazem coisas diferentes, pois o matplotlib usa uma ordem hierárquica na qual uma janela de figura contém uma figura que pode consistir em muitos eixos. Além disso, existem funções da interface pyplot e existem métodos na Figure
classe. Vou discutir os dois casos abaixo.
interface pyplot
pyplot
é um módulo que coleta algumas funções que permitem que o matplotlib seja usado de maneira funcional. Presumo aqui que pyplot
tenha sido importado como import matplotlib.pyplot as plt
. Nesse caso, existem três comandos diferentes que removem coisas:
plt.cla()
limpa os eixos , ou seja, os eixos atualmente ativos na figura atual. Deixa os outros eixos intocados.
plt.clf()
limpa a figura atual inteira com todos os seus eixos, mas deixa a janela aberta, para que possa ser reutilizada em outras parcelas.
plt.close()
fecha uma janela , que será a janela atual, se não for especificado de outra forma.
Quais funções melhor se adequam a você dependem, portanto, do seu caso de uso.
Além close()
disso, a função permite especificar qual janela deve ser fechada. O argumento pode ser um número ou nome dado a uma janela quando foi criada usando figure(number_or_name)
ou pode ser uma instância de figura fig
obtida, ou seja, usando fig = figure()
. Se nenhum argumento for fornecido close()
, a janela atualmente ativa será fechada. Além disso, existe a sintaxe close('all')
, que fecha todas as figuras.
métodos da classe Figura
Além disso, a Figure
classe fornece métodos para limpar números. Assumirei a seguir que fig
é uma instância de um Figure
:
fig.clf()
limpa a figura inteira . Essa chamada é equivalente plt.clf()
apenas se fig
for o valor atual.
fig.clear()
é sinônimo de fig.clf()
Observe que even del fig
não fecha a janela da figura associada. Tanto quanto sei, a única maneira de fechar uma janela de figura é usando plt.close(fig)
como descrito acima.
close()
ser um comando não específico, procurei uma maneira de especificar o fechamento da figura (fig.close()
não é uma função). A sintaxe correta é:plt.close(fig)
.clear()
, eu não vi muita diferençacla()
apenas com o fato de que apenas nos eixos parasitascla()
são tratados especialmente.clear()
função no meumatplotlib.pyplot
(Versão 1.4.2 no MacOS). Você poderia me direcionar para a documentação associada?clear()
método. OFigure.clear
equivalente aclf
eAxes.clear
é equivalente acla
.Há apenas uma ressalva que eu descobri hoje. Se você tem uma função que está chamando uma plotagem muitas vezes, é melhor usar, em
plt.close(fig)
vez de, defig.clf()
alguma forma, a primeira não se acumular na memória. Em resumo, se a memória é uma preocupação, use plt.close (fig.) (Embora pareça que existem maneiras melhores, vá para o final deste comentário para obter links relevantes).Portanto, o seguinte script produzirá uma lista vazia:
Considerando que este irá produzir uma lista com cinco figuras.
Na documentação acima, não está claro qual é a diferença entre fechar uma figura e fechar uma janela. Talvez isso esclareça.
Se você quiser tentar um script completo, você tem:
Se a memória é uma preocupação, alguém já postou uma solução alternativa no SO, consulte: Crie uma figura com referência contada
fonte
pyplot
API padrão .plt.cla () significa eixo de corrente clara
plt.clf () significa um valor atual claro
além disso, há plt.gca () (obtém o eixo atual) e plt.gcf () (obtém o valor atual)
Leia mais aqui: Matplotlib, Pyplot, Pylab, etc: Qual é a diferença entre estes e quando usar cada um?
fonte