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:
-example-in-Matplotlib-Python.webp)
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:
-example-in-Matplotlib-Python.webp)
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
