Diferencias entre los métodos cla(), clf() y close() en Matplotlib

Suraj Joshi 30 enero 2023
  1. matplotlib.pyplot.cla()
  2. matplotlib.pyplot.cla()
  3. matplotlib.pyplot.close()
Diferencias entre los métodos cla(), clf() y close() en Matplotlib

El método matplotlib.pyplot.cla() borra los ejes actuales, el método matplotlib.pyplot.clf() borra la figura actual y el método matplotlib.pyplot.close() cierra toda la ventana.

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:

Parcela de sinx y cosx Matplotlib

Usaremos esta figura para explicar estas funciones: cla(), clf() y close(). La figura consiste en una figura con dos subplots; la subplot de la fila superior es la gráfica de la función sinx, mientras que la subplot de la fila inferior representa la gráfica de la función cosx.

matplotlib.pyplot.cla()

El comando matplotlib.pyplot.cla() se utiliza para borrar los ejes actuales en Matplotlib. Axes es simplemente una parte de una figura, normalmente una subplot y sus detalles.

Ejemplo: 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() ejemplo en Matplotlib Python

Aquí, podemos ver que el método cla() borra los ejes ax[1], es decir, la segunda fila de la subplot. Borrar los ejes significa eliminar la subplot con sus detalles, como el xlabel, el ylabel y el title; sin embargo, los ejes ax[0] o la subplot de la fila superior no se ven alterados por el método porque cla() fue invocada sólo por los ejes ax[1].

matplotlib.pyplot.cla()

El matplotlib.pyplot.clf() borra toda la figura en Matplotlib. Una figura puede ser considerada como la gran imagen de una trama, que consiste en cada detalle de la trama como subplots, subejes, títulos y leyendas.

Ejemplo: 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:

plt.clf() ejemplo en Matplotlib Python

Aquí, podemos ver que el método clf() aclara todo en la trama. Este proceso incluye todos los ejes; sin embargo, la ventana del gráfico sigue ahí, que puede ser reutilizada para generar otras figuras.

Ten en cuenta que no podemos usar el método clf() para cada eje.

matplotlib.pyplot.close()

El matplotlib.pyplot.close() simplemente cierra la ventana de figuras en Matplotlib, y no veremos nada al llamar al método plt.show().

Ejemplo: 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()

El script no genera ninguna salida ya que el método close() borra la figura y cierra la ventana; no veremos nada usando el proceso plt.show().

Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Artículo relacionado - Matplotlib Axes