Differenze tra i metodi cla(), clf() e close() in Matplotlib

Suraj Joshi 15 febbraio 2024
  1. matplotlib.pyplot.cla()
  2. matplotlib.pyplot.cla()
  3. matplotlib.pyplot.close()
Differenze tra i metodi cla(), clf() e close() in Matplotlib

Il metodo matplotlib.pyplot.cla() cancella gli assi correnti, il metodo matplotlib.pyplot.clf() cancella la cifra corrente e il metodo matplotlib.pyplot.close() chiude l’intera finestra.

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

Produzione:

Trama di sinx e cosx Matplotlib

Useremo questa figura per spiegare queste funzioni: cla(), clf() e close(). La figura è costituita da una figura con due sottotrame; la sottotrama sulla riga superiore è la trama della funzione sinx, mentre la sottotrama sulla riga inferiore rappresenta la trama della funzione cosx.

matplotlib.pyplot.cla()

Il comando matplotlib.pyplot.cla() è usato per cancellare gli assi correnti in Matplotlib. Axes è semplicemente una parte di una figura, di solito una sottotrama e i suoi dettagli.

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

Produzione:

esempio plt.cla() in Matplotlib Python

Qui, possiamo vedere che il metodo cla() cancella gli assi ax[1], cioè la seconda riga della sottotrama. Cancellare gli assi significa rimuovere la sottotrama con i suoi dettagli, come xlabel, ylabel e title; tuttavia, gli assi ax[0] o la sottotrama nella riga superiore non sono alterati dal metodo perché cla() è stato invocato solo dagli assi ax[1].

matplotlib.pyplot.cla()

Il matplotlib.pyplot.clf() cancella l’intera figura in Matplotlib. Una figura può essere considerata il quadro generale di una trama, composta da ogni dettaglio nella trama come sottotrame, sottoasse, titoli e leggende.

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

Produzione:

esempio plt.clf() in Matplotlib Python

Qui possiamo vedere che il metodo clf() cancella tutto nella trama. Questo processo include tutti gli assi; tuttavia, la finestra della trama è ancora lì, che può essere riutilizzata per generare altre figure.

Tieni presente che non possiamo usare il metodo clf() per ogni asse.

matplotlib.pyplot.close()

Il matplotlib.pyplot.close() chiude semplicemente la finestra della figura in Matplotlib, e non vedremo nulla quando chiameremo il metodo plt.show().

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

Lo script non genera alcun output in quanto il metodo close() cancella la figura e chiude la finestra; non vedremo nulla usando il processo plt.show().

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Articolo correlato - Matplotlib Axes