Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Sottotrame | Personalizzazione Dei Grafici
Visualizzazione Definitiva con Python

Scorri per mostrare il menu

book
Sottotrame

La funzione subplots() di pyplot svolge proprio questo scopo specifico. È stata utilizzata in precedenza per creare una tela nella prima sezione e ora verrà esaminata più nel dettaglio.

Righe e Colonne

Gli argomenti più importanti di questa funzione sono nrows e ncolumns, che impostano il numero di righe e colonne nella griglia dei subplot. Per impostazione predefinita, entrambi sono 1, quindi si ottiene un singolo grafico (Axes).

La funzione subplots() restituisce un oggetto Figure e un singolo oggetto Axes oppure un array di oggetti Axes, a seconda della dimensione della griglia.

12345
import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) plt.show()
copy

È stata creata una griglia di sottotrame 2 per 2.

Note
Nota

Poiché ci sono più sottotrame, subplots restituisce un array di oggetti Axes, solitamente memorizzato in una variabile chiamata axs (il singolare ax si usa per un solo grafico).

In questo caso, axs è un array bidimensionale, quindi sono necessari sia l'indice di riga che quello di colonna per accedere a una sottotrama specifica.

12345678910111213141516
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Creating a 2x2 subplot grid fig, axs = plt.subplots(2, 2) # Creating a different plot for each Axes object axs[0, 0].plot(data_linear) axs[0, 1].plot(data_squared) axs[1, 0].scatter(data_linear, data_linear) axs[1, 1].scatter(data_linear, data_squared) plt.show()
copy

La prima riga (riga 0) contiene due grafici a linee, mentre la seconda riga (riga 1) contiene due grafici a dispersione.

Poiché ogni grafico è posizionato su un subplot separato, non è possibile utilizzare direttamente plt.plot() o plt.scatter(). L'approccio corretto è chiamare il metodo corrispondente su ciascun oggetto Axes individuale.

Conversione in array 1D

È anche possibile utilizzare il metodo .ravel() per convertire un array 2D di oggetti Axes in un array appiattito contiguo 1D:

12345678910111213141516171819
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Creating a 2x2 subplot grid fig, axs = plt.subplots(2, 2) # Flattening axs to a 1D array for easier indexing axs = axs.ravel() # Creating a different plot for each Axes object axs[0].plot(data_linear) axs[1].plot(data_squared) axs[2].scatter(data_linear, data_linear) axs[3].scatter(data_linear, data_squared) plt.show()
copy

Con un array 2x2, axs.ravel() lo converte in un array 1D contenente quattro elementi.

Condivisione di un asse

La funzione subplots() dispone anche dei parametri sharex e sharey. Essi controllano se gli assi x o y sono condivisi tra i subplot. Entrambi sono impostati su False per impostazione predefinita.

12345678910111213141516171819
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Create a 2x2 subplot grid with shared x-axis across all subplots fig, axs = plt.subplots(2, 2, sharex=True) # Flatten axs array for easier indexing axs = axs.ravel() # Plotting different data on each subplot axs[0].plot(data_linear) axs[1].plot(data_squared) axs[2].scatter(data_linear, data_linear) axs[3].scatter(data_linear, data_squared) plt.show()
copy

Impostando sharex=True si condivide l'asse x tra tutti i sottografi, il che è utile in questo caso perché tutti i sottografi utilizzano gli stessi valori sull'asse x.

È anche possibile impostare sharex o sharey su 'row' per condividere l'asse all'interno di ogni riga di sottografi, oppure su 'col' per condividerlo all'interno di ogni colonna di sottografi.

Note
Approfondisci

Come sempre, sentiti libero di approfondire nella documentazione di subplots() se desideri approfondire l'argomento.

Compito

Swipe to start coding

  1. Utilizzare la funzione corretta per creare una griglia di subplot.
  2. La griglia deve avere 3 righe e 1 colonna (specificare i primi due parametri).
  3. Specificare l'argomento keyword più a destra, in modo che l'asse x sia condiviso tra tutti i subplot.
  4. Salvare il risultato della funzione per la creazione dei subplot nelle variabili fig e axs (da sinistra a destra).
  5. Posizionare il primo grafico a linee per data_linear nella prima riga (riga 0) della griglia di subplot.
  6. Posizionare il secondo grafico a linee per data_squared nella seconda riga (riga 1) della griglia di subplot.
  7. Posizionare il terzo grafico a linee per data_exp nella terza riga (riga 2) della griglia di subplot.

Soluzione

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 6

Chieda ad AI

expand
ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

book
Sottotrame

La funzione subplots() di pyplot svolge proprio questo scopo specifico. È stata utilizzata in precedenza per creare una tela nella prima sezione e ora verrà esaminata più nel dettaglio.

Righe e Colonne

Gli argomenti più importanti di questa funzione sono nrows e ncolumns, che impostano il numero di righe e colonne nella griglia dei subplot. Per impostazione predefinita, entrambi sono 1, quindi si ottiene un singolo grafico (Axes).

La funzione subplots() restituisce un oggetto Figure e un singolo oggetto Axes oppure un array di oggetti Axes, a seconda della dimensione della griglia.

12345
import matplotlib.pyplot as plt fig, axs = plt.subplots(2, 2) plt.show()
copy

È stata creata una griglia di sottotrame 2 per 2.

Note
Nota

Poiché ci sono più sottotrame, subplots restituisce un array di oggetti Axes, solitamente memorizzato in una variabile chiamata axs (il singolare ax si usa per un solo grafico).

In questo caso, axs è un array bidimensionale, quindi sono necessari sia l'indice di riga che quello di colonna per accedere a una sottotrama specifica.

12345678910111213141516
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Creating a 2x2 subplot grid fig, axs = plt.subplots(2, 2) # Creating a different plot for each Axes object axs[0, 0].plot(data_linear) axs[0, 1].plot(data_squared) axs[1, 0].scatter(data_linear, data_linear) axs[1, 1].scatter(data_linear, data_squared) plt.show()
copy

La prima riga (riga 0) contiene due grafici a linee, mentre la seconda riga (riga 1) contiene due grafici a dispersione.

Poiché ogni grafico è posizionato su un subplot separato, non è possibile utilizzare direttamente plt.plot() o plt.scatter(). L'approccio corretto è chiamare il metodo corrispondente su ciascun oggetto Axes individuale.

Conversione in array 1D

È anche possibile utilizzare il metodo .ravel() per convertire un array 2D di oggetti Axes in un array appiattito contiguo 1D:

12345678910111213141516171819
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Creating a 2x2 subplot grid fig, axs = plt.subplots(2, 2) # Flattening axs to a 1D array for easier indexing axs = axs.ravel() # Creating a different plot for each Axes object axs[0].plot(data_linear) axs[1].plot(data_squared) axs[2].scatter(data_linear, data_linear) axs[3].scatter(data_linear, data_squared) plt.show()
copy

Con un array 2x2, axs.ravel() lo converte in un array 1D contenente quattro elementi.

Condivisione di un asse

La funzione subplots() dispone anche dei parametri sharex e sharey. Essi controllano se gli assi x o y sono condivisi tra i subplot. Entrambi sono impostati su False per impostazione predefinita.

12345678910111213141516171819
import matplotlib.pyplot as plt import numpy as np data_linear = np.arange(1, 11) data_squared = data_linear ** 2 # Create a 2x2 subplot grid with shared x-axis across all subplots fig, axs = plt.subplots(2, 2, sharex=True) # Flatten axs array for easier indexing axs = axs.ravel() # Plotting different data on each subplot axs[0].plot(data_linear) axs[1].plot(data_squared) axs[2].scatter(data_linear, data_linear) axs[3].scatter(data_linear, data_squared) plt.show()
copy

Impostando sharex=True si condivide l'asse x tra tutti i sottografi, il che è utile in questo caso perché tutti i sottografi utilizzano gli stessi valori sull'asse x.

È anche possibile impostare sharex o sharey su 'row' per condividere l'asse all'interno di ogni riga di sottografi, oppure su 'col' per condividerlo all'interno di ogni colonna di sottografi.

Note
Approfondisci

Come sempre, sentiti libero di approfondire nella documentazione di subplots() se desideri approfondire l'argomento.

Compito

Swipe to start coding

  1. Utilizzare la funzione corretta per creare una griglia di subplot.
  2. La griglia deve avere 3 righe e 1 colonna (specificare i primi due parametri).
  3. Specificare l'argomento keyword più a destra, in modo che l'asse x sia condiviso tra tutti i subplot.
  4. Salvare il risultato della funzione per la creazione dei subplot nelle variabili fig e axs (da sinistra a destra).
  5. Posizionare il primo grafico a linee per data_linear nella prima riga (riga 0) della griglia di subplot.
  6. Posizionare il secondo grafico a linee per data_squared nella seconda riga (riga 1) della griglia di subplot.
  7. Posizionare il terzo grafico a linee per data_exp nella terza riga (riga 2) della griglia di subplot.

Soluzione

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 6
Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Siamo spiacenti che qualcosa sia andato storto. Cosa è successo?
some-alt