Nota
Fare clic qui per scaricare il codice di esempio completo
Creazione di più sottotrame utilizzando plt.subplots
#
pyplot.subplots
crea una figura e una griglia di sottotrame con una singola chiamata, fornendo al tempo stesso un ragionevole controllo su come vengono create le singole trame. Per casi d'uso più avanzati è possibile utilizzare GridSpec
per un layout di sottotrama più generale o Figure.add_subplot
per aggiungere sottotrame in posizioni arbitrarie all'interno della figura.
Una figura con una sola sottotrama #
subplots()
senza argomenti restituisce a Figure
e un singolo
Axes
.
Questo è in realtà il modo più semplice e consigliato per creare una singola figura e assi.
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title('A single plot')
Text(0.5, 1.0, 'A single plot')
Impilare le sottotrame in una direzione #
I primi due argomenti facoltativi di pyplot.subplots
definiscono il numero di righe e colonne della griglia della sottotrama.
Quando si esegue l'impilamento in una sola direzione, axs
viene restituito un array numpy 1D contenente l'elenco degli assi creati.
fig, axs = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
axs[0].plot(x, y)
axs[1].plot(x, -y)
[<matplotlib.lines.Line2D object at 0x7f2d00efd510>]
Se stai creando solo pochi assi, è utile decomprimerli immediatamente in variabili dedicate per ciascun asse. In questo modo, possiamo usare ax1
invece del più prolisso axs[0]
.
fig, (ax1, ax2) = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
ax1.plot(x, y)
ax2.plot(x, -y)
[<matplotlib.lines.Line2D object at 0x7f2d00a95b70>]
Per ottenere sottotrame affiancate, passare i parametri per una riga e due colonne.1, 2
fig, (ax1, ax2) = plt.subplots(1, 2)
fig.suptitle('Horizontally stacked subplots')
ax1.plot(x, y)
ax2.plot(x, -y)
[<matplotlib.lines.Line2D object at 0x7f2cfb43d330>]
Impilare sottotrame in due direzioni #
Quando si esegue l'impilamento in due direzioni, axs
viene restituito un array NumPy 2D.
Se devi impostare i parametri per ogni sottotrama, è utile scorrere tutte le sottotrame in una griglia 2D usando .for ax in axs.flat:
fig, axs = plt.subplots(2, 2)
axs[0, 0].plot(x, y)
axs[0, 0].set_title('Axis [0, 0]')
axs[0, 1].plot(x, y, 'tab:orange')
axs[0, 1].set_title('Axis [0, 1]')
axs[1, 0].plot(x, -y, 'tab:green')
axs[1, 0].set_title('Axis [1, 0]')
axs[1, 1].plot(x, -y, 'tab:red')
axs[1, 1].set_title('Axis [1, 1]')
for ax in axs.flat:
ax.set(xlabel='x-label', ylabel='y-label')
# Hide x labels and tick labels for top plots and y ticks for right plots.
for ax in axs.flat:
ax.label_outer()
Puoi utilizzare il tuple-unpacking anche in 2D per assegnare tutte le sottotrame a variabili dedicate:
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2)
fig.suptitle('Sharing x per column, y per row')
ax1.plot(x, y)
ax2.plot(x, y**2, 'tab:orange')
ax3.plot(x, -y, 'tab:green')
ax4.plot(x, -y**2, 'tab:red')
for ax in fig.get_axes():
ax.label_outer()
Assi polari #
Il parametro subplot_kw di pyplot.subplots
controlla le proprietà della sottotrama (vedi anche Figure.add_subplot
). In particolare, questo può essere utilizzato per creare una griglia di Assi polari.
Tempo di esecuzione totale dello script: (0 minuti 7,774 secondi)