Box plot in Python utilizzando Matplotlib
UN Trama a scatola è anche conosciuto come Trama dei baffi viene creato per visualizzare il riepilogo dell'insieme di valori di dati aventi proprietà come minimo, primo quartile, mediana, terzo quartile e massimo. Nel box plot, viene creata una scatola dal primo quartile al terzo quartile, c'è anche una linea verticale che attraversa la scatola nella mediana. Qui l'asse x indica i dati da tracciare mentre l'asse y mostra la distribuzione di frequenza.
Creazione del diagramma a scatola
Il modulo matplotlib.pyplot della libreria matplotlib fornisce la funzione boxplot() con l'aiuto della quale possiamo creare box plot.
Sintassi:
matplotlib.pyplot.boxplot(data, notch=Nessuno, vert=Nessuno, patch_artist=Nessuno, larghezze=Nessuno)
parametri:
| Attributo | Valore |
|---|---|
| dati | matrice o sequenza di matrice da tracciare |
| tacca | il parametro opzionale accetta valori booleani |
| Verde | il parametro opzionale accetta i valori booleani false e true rispettivamente per il grafico orizzontale e verticale |
| bootstrap | il parametro opzionale accetta int specifica gli intervalli attorno ai boxplot dentellati |
| usermediani | il parametro facoltativo accetta un array o una sequenza di dimensioni dell'array compatibili con i dati |
| posizioni | il parametro opzionale accetta l'array e imposta la posizione delle caselle |
| larghezze | il parametro opzionale accetta l'array e imposta la larghezza dei riquadri |
| patch_artista | parametro opzionale con valori booleani |
| etichette | sequenza di stringhe imposta l'etichetta per ciascun set di dati |
| linea media | facoltativo avendo un valore booleano prova a rendere la linea media come l'intera larghezza del riquadro |
| ordine | il parametro opzionale imposta l'ordine del boxplot |
I valori dei dati forniti al metodo ax.boxplot() possono essere un array Numpy, un elenco Python o una tupla di array. Creiamo il box plot utilizzando numpy.random.normal() per creare alcuni dati casuali, richiede media, deviazione standard e il numero desiderato di valori come argomenti.
Esempio:
Python3
# Import libraries> import> matplotlib.pyplot as plt> import> numpy as np> # Creating dataset> np.random.seed(> 10> )> data> => np.random.normal(> 100> ,> 20> ,> 200> )> fig> => plt.figure(figsize> => (> 10> ,> 7> ))> # Creating plot> plt.boxplot(data)> # show plot> plt.show()> |
Produzione:
Personalizzazione del box plot
matplotlib.pyplot.boxplot() offre infinite possibilità di personalizzazione del box plot. L'attributo notch = True crea il formato notch per il box plot, patch_artist = True riempie il box plot con i colori, possiamo impostare colori diversi su riquadri diversi. L'attributo vert = 0 crea un box plot orizzontale. le etichette assumono le stesse dimensioni dei set di dati numerici.
Esempio 1:
Python3
# Import libraries> import> matplotlib.pyplot as plt> import> numpy as np> # Creating dataset> np.random.seed(> 10> )> data_1> => np.random.normal(> 100> ,> 10> ,> 200> )> data_2> => np.random.normal(> 90> ,> 20> ,> 200> )> data_3> => np.random.normal(> 80> ,> 30> ,> 200> )> data_4> => np.random.normal(> 70> ,> 40> ,> 200> )> data> => [data_1, data_2, data_3, data_4]> fig> => plt.figure(figsize> => (> 10> ,> 7> ))> # Creating axes instance> ax> => fig.add_axes([> 0> ,> 0> ,> 1> ,> 1> ])> # Creating plot> bp> => ax.boxplot(data)> # show plot> plt.show()> |
Produzione:
Esempio 2: Proviamo a modificare la trama sopra con alcune personalizzazioni:
Python3
# Import libraries> import> matplotlib.pyplot as plt> import> numpy as np> # Creating dataset> np.random.seed(> 10> )> data_1> => np.random.normal(> 100> ,> 10> ,> 200> )> data_2> => np.random.normal(> 90> ,> 20> ,> 200> )> data_3> => np.random.normal(> 80> ,> 30> ,> 200> )> data_4> => np.random.normal(> 70> ,> 40> ,> 200> )> data> => [data_1, data_2, data_3, data_4]> fig> => plt.figure(figsize> => (> 10> ,> 7> ))> ax> => fig.add_subplot(> 111> )> # Creating axes instance> bp> => ax.boxplot(data, patch_artist> => True> ,> > notch> => 'True'> , vert> => 0> )> colors> => [> '#0000FF'> ,> '#00FF00'> ,> > '#FFFF00'> ,> '#FF00FF'> ]> for> patch, color> in> zip> (bp[> 'boxes'> ], colors):> > patch.set_facecolor(color)> # changing color and linewidth of> # whiskers> for> whisker> in> bp[> 'whiskers'> ]:> > whisker.> set> (color> => '#8B008B'> ,> > linewidth> => 1.5> ,> > linestyle> => ':'> )> # changing color and linewidth of> # caps> for> cap> in> bp[> 'caps'> ]:> > cap.> set> (color> => '#8B008B'> ,> > linewidth> => 2> )> # changing color and linewidth of> # medians> for> median> in> bp[> 'medians'> ]:> > median.> set> (color> => 'red'> ,> > linewidth> => 3> )> # changing style of fliers> for> flier> in> bp[> 'fliers'> ]:> > flier.> set> (marker> => 'D'> ,> > color> => '#e7298a'> ,> > alpha> => 0.5> )> > # x-axis labels> ax.set_yticklabels([> 'data_1'> ,> 'data_2'> ,> > 'data_3'> ,> 'data_4'> ])> # Adding title> plt.title(> 'Customized box plot'> )> # Removing top axes and right axes> # ticks> ax.get_xaxis().tick_bottom()> ax.get_yaxis().tick_left()> > # show plot> plt.show()> |
Produzione: