Diferenças entre cla(), clf() e close() Métodos em Matplotlib

Suraj Joshi 15 fevereiro 2024
  1. matplotlib.pyplot.cla()
  2. matplotlib.pyplot.cla()
  3. matplotlib.pyplot.close()
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:

Lote de sinx e cosx Matplotlib

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:

plt.cla() exemplo em Matplotlib Python

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:

exemplo plt.clf() em Matplotlib Python

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 avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artigo relacionado - Matplotlib Axes