Matplotlib - Interfaccia orientata agli oggetti

Sebbene sia facile generare rapidamente grafici con l'estensione matplotlib.pyplotmodulo, l'uso dell'approccio orientato agli oggetti è raccomandato in quanto offre un maggiore controllo e personalizzazione dei grafici. La maggior parte delle funzioni sono disponibili anche inmatplotlib.axes.Axes classe.

L'idea principale alla base dell'utilizzo del metodo più formale orientato agli oggetti è creare oggetti figura e quindi chiamare semplicemente metodi o attributi da quell'oggetto. Questo approccio aiuta a gestire meglio una tela che ha più grafici su di essa.

Nell'interfaccia orientata agli oggetti, Pyplot viene utilizzato solo per alcune funzioni come la creazione di figure e l'utente crea esplicitamente e tiene traccia degli oggetti figura e assi. A questo livello, l'utente utilizza Pyplot per creare figure e attraverso queste figure è possibile creare uno o più oggetti assi. Questi oggetti assi vengono quindi utilizzati per la maggior parte delle azioni di stampa.

Per cominciare, creiamo un'istanza di figura che fornisce una tela vuota.

fig = plt.figure()

Ora aggiungi gli assi alla figura. Iladd_axes()richiede un oggetto elenco di 4 elementi corrispondenti a sinistra, fondo, larghezza e altezza della figura. Ogni numero deve essere compreso tra 0 e 1 -

ax=fig.add_axes([0,0,1,1])

Imposta le etichette per gli assi x e y oltre al titolo -

ax.set_title("sine wave")
ax.set_xlabel('angle')
ax.set_ylabel('sine')

Richiama il metodo plot () dell'oggetto axes.

ax.plot(x,y)

Se stai usando Jupyter notebook, deve essere emessa la direttiva inline% matplotlib; la funzione otherwistshow () del modulo pyplot mostra il grafico.

Considera di eseguire il codice seguente:

from matplotlib import pyplot as plt
import numpy as np
import math
x = np.arange(0, math.pi*2, 0.05)
y = np.sin(x)
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.plot(x,y)
ax.set_title("sine wave")
ax.set_xlabel('angle')
ax.set_ylabel('sine')
plt.show()

Produzione

La riga di codice sopra genera il seguente output:

Lo stesso codice quando viene eseguito nel notebook Jupyter mostra l'output come mostrato di seguito -