Diferenças entre cla(), clf() e close() Métodos em Matplotlib
O método matplotlib.pyplot.cla()
limpa os eixos actuais, o método matplotlib.pyplot.clf()
limpa a figura actual, e o método matplotlib.pyplot.close()
fecha a janela inteira.
import math
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2 * math.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
fig, ax = plt.subplots(2, 1)
ax[0].plot(x, y1)
ax[0].set_xlabel("x")
ax[0].set_ylabel("sinx")
ax[0].set_title("Plot of sinx")
ax[1].plot(x, y2)
ax[1].set_xlabel("x")
ax[1].set_ylabel("cosx")
ax[1].set_title("Plot of cosx")
fig.suptitle("Plot of sinx and cosx", fontsize=16)
fig.tight_layout(pad=3.0)
plt.show()
Resultado:
Vamos utilizar esta figura para explicar estas funções: cla()
, clf()
e close()
. A figura consiste numa figura com duas subparcelas; a subparcela na linha superior é a parcela da função sinx
, enquanto a subparcela na linha inferior representa a parcela da função cosx
.
matplotlib.pyplot.cla()
O comando matplotlib.pyplot.cla()
é utilizado para limpar os eixos actuais em Matplotlib. Os eixos são simplesmente uma parte de uma figura, geralmente um subplot e os seus detalhes.
Exemplo: matplotlib.pyplot.cla()
import math
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2 * math.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
fig, ax = plt.subplots(2, 1)
ax[0].plot(x, y1)
ax[0].set_xlabel("x")
ax[0].set_ylabel("sinx")
ax[0].set_title("Plot of sinx")
ax[1].plot(x, y2)
ax[1].set_xlabel("x")
ax[1].set_ylabel("cosx")
ax[1].set_title("Plot of cosx")
ax[1].cla()
fig.suptitle("Plot of sinx and cosx", fontsize=16)
fig.tight_layout(pad=3.0)
plt.show()
Resultado:
Aqui, podemos ver que o método cla()
limpa os eixos ax[1]
, ou seja, a segunda fila do subplot. Limpar eixos significa remover o subplot com os seus detalhes, tais como o xlabel
, ylabel
, e title
; contudo, os eixos ax[0]
ou o subplot na linha superior não é alterado pelo método porque cla()
foi invocado apenas pelos eixos ax[1]
.
matplotlib.pyplot.cla()
O matplotlib.pyplot.clf()
limpa a figura inteira em Matplotlib. Uma figura pode ser considerada o grande quadro de um enredo, consistindo em cada detalhe do enredo como subquadros, subeixos, títulos, e lendas.
Exemplo:matplotlib.pyplot.clf()
import math
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2 * math.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
fig, ax = plt.subplots(2, 1)
ax[0].plot(x, y1)
ax[0].set_xlabel("x")
ax[0].set_ylabel("sinx")
ax[0].set_title("Plot of sinx")
ax[1].plot(x, y2)
ax[1].set_xlabel("x")
ax[1].set_ylabel("cosx")
ax[1].set_title("Plot of cosx")
fig.suptitle("Plot of sinx and cosx", fontsize=16)
fig.tight_layout(pad=3.0)
plt.clf()
plt.show()
Resultado:
Aqui, podemos ver que o método clf()
limpa tudo na parcela. Este processo inclui todos os eixos; no entanto, a janela da parcela ainda está lá, que pode ser reutilizada para gerar outras figuras.
Tenha em mente que não podemos utilizar o método clf()
para cada eixo.
matplotlib.pyplot.close()
O matplotlib.pyplot.close()
simplesmente fecha a janela da figura em Matplotlib, e não veremos nada quando chamarmos o método plt.show()
.
Exemplo:matplotlib.pyplot.close()
import math
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2 * math.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
fig, ax = plt.subplots(2, 1)
ax[0].plot(x, y1)
ax[0].set_xlabel("x")
ax[0].set_ylabel("sinx")
ax[0].set_title("Plot of sinx")
ax[1].plot(x, y2)
ax[1].set_xlabel("x")
ax[1].set_ylabel("cosx")
ax[1].set_title("Plot of cosx")
fig.suptitle("Plot of sinx and cosx", fontsize=16)
fig.tight_layout(pad=3.0)
plt.close()
plt.show()
O script não gera qualquer saída, uma vez que o método close()
limpa a figura e fecha a janela; não veremos nada utilizando o processo plt.show()
.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedInArtigo relacionado - Matplotlib Axes
- Como rodar o texto da etiqueta do eixo X em Matplotlib
- Como definir o tamanho da fonte dos Rótulos em Matplotlib
- Como adicionar uma etiqueta do eixo Y ao eixo Y secundário em Matplotlib
- Como plotar eixos logarítmicos em Matplotlib
- Como fazer uma parcela quadrada com eixos iguais em Matplotlib
- Como estabelecer limites para os eixos em Matplotlib