logo

Box plot in Python utilizzando Matplotlib

Cos'è il boxplot?

Un box plot è un modo per visualizzare la distribuzione dei dati utilizzando un riquadro e alcune linee verticali. È noto come il complotto dei baffi. I dati possono essere distribuiti tra cinque intervalli chiave, che sono i seguenti:

    Minimo: Q1-1,5*IQR1° quartile(Q1): 25° percentileMediano:50esimo percentile3° quarto(Q3): 75° percentileMassimo: Q3+1,5*IQR

Qui IQR rappresenta il Intervallo interquartile che inizia dal primo quartile (Q1) e termina al terzo quartile (Q3).

Visualizzazione del boxplot

Box plot in Python utilizzando Matplotlib

Nel box plot i punti fuori range vengono chiamati outlier. Possiamo creare il box plot dei dati per determinare quanto segue:

  • Il numero di valori anomali in un set di dati
  • I dati sono distorti o no
  • L'intervallo dei dati

L'intervallo dei dati dal minimo al massimo è chiamato limite dei baffi. In Python, utilizzeremo il modulo pyplot del modulo matplotlib, che ha una funzione incorporata denominata boxplot() che può creare il box plot di qualsiasi set di dati.

Sintassi:

 matplotlib.pyplot.boxplot(data,notch=none,vert=none,patch_artist,widths=none) 

Nella funzione boxplot(), abbiamo molti attributi che possono essere utilizzati per creare un box plot più attraente e sorprendente del set di dati.

    dati: I dati devono essere una matrice o una sequenza di matrici che verranno tracciate.tacca: questo parametro accetta solo valori booleani, true o false.Verde: questo attributo accetta un valore booleano. Se è impostato su true, il grafico sarà verticale. Altrimenti sarà orizzontale.posizione: Accetta l'array di numeri interi che definisce la posizione della casella.larghezze: Accetta l'array di numeri interi che definisce la larghezza della casella.patch_artista: questo parametro accetta valori booleani, true o false, ed è un parametro facoltativo.etichette: accetta le stringhe che definiscono le etichette per ciascun punto datilinea media: Accetta un valore booleano ed è facoltativo.ordine: Imposta l'ordine del boxplot.bootstrap: Accetta il valore intero, che specifica l'intervallo del boxplot dentellato.

Esempio 1:

Creeremo il set di dati casuali dell'array Numpy e creeremo il box plot.

forma normale di Greibach
 import matplotlib.pyplot as plt import numpy as np np.random.seed(15) dataSet = np.random.normal(100, 25, 200) print(dataSet) figure = plt.figure(figsize =(10, 8)) plt.boxplot(dataSet) plt.show() 

Produzione:

Box plot in Python utilizzando Matplotlib

Spiegazione:

Nel codice sopra, prima di tutto, abbiamo importato nel codice le librerie numpy e matplotlib. Quindi abbiamo creato il set di dati casuale e tracciato il box plot utilizzando la funzione boxplot().

Esempio2:

Possiamo creare più box plot contemporaneamente nello stesso file.

cronologia delle versioni di Android
 import matplotlib.pyplot as plt import numpy as np np.random.seed(10) dataSet1 = np.random.normal(100, 10, 220) dataSet2 = np.random.normal(80, 20, 200) dataSet3 = np.random.normal(60, 35, 220) dataSet4 = np.random.normal(50, 40, 200) dataSet = [dataSet1, dataSet2, dataSet3, dataSet4] figure = plt.figure(figsize =(10, 7)) ax = figure.add_axes([0, 0, 1, 1]) bp = ax.boxplot(dataSet) plt.show() 

Produzione:

Grafico a scatole in Python utilizzando Matplotlib

Spiegazione:

Nel codice sopra abbiamo quattro set di dati che utilizzano metodi casuali di Numpy. Quindi abbiamo creato l'elenco dei quattro set di dati e utilizziamo questa funzione interna boxplot().

Esempio 3:

Possiamo utilizzare alcuni attributi della funzione boxplot() per personalizzare la trama.

 import matplotlib.pyplot as plt import numpy as np np.random.seed(10) dataSet1 = np.random.normal(100, 10, 220) dataSet2 = np.random.normal(80, 20, 200) dataSet3 = np.random.normal(60, 35, 220) dataSet4 = np.random.normal(50, 40, 200) dataSet = [dataSet1, dataSet2, dataSet3, dataSet4] figure = plt.figure(figsize =(10, 7)) ax = figure.add_subplot(111) bp = ax.boxplot(dataSet, patch_artist = True,notch ='True', vert = 0) colors = ['#00FF00','#0F00FF', '#F00FF0','#FFFF0F'] for patch, color in zip(bp['boxes'], colors): patch.set_facecolor(color) for whisker in bp['whiskers']: whisker.set(color ='#8E008B',linewidth = 1.4,linestyle =':') for cap in bp['caps']: cap.set(color ='#8E008B',linewidth = 2.1) for median in bp['medians']: median.set(color ='blue',linewidth = 3) for flier in bp['fliers']: flier.set(marker ='D',color ='#d7298c',alpha = 0.6) ax.set_yticklabels(['dataSet1', 'dataSet2','dataSet3', 'dataSet4']) plt.title('Customized box plot using attributes') ax.get_xaxis().tick_bottom() ax.get_yaxis().tick_left() plt.show() 

Produzione:

Box plot in Python utilizzando Matplotlib

Spiegazione:

Nel codice precedente, abbiamo creato i quattro set di dati utilizzando funzioni casuali e li abbiamo impostati in un elenco. Ora abbiamo impostato i diversi colori per ogni box plot utilizzando la lista dei colori e utilizzando la funzione set_facecolor().

differenza tra ghiaccio e neve

Abbiamo impostato la larghezza della linea di ogni box plot e impostato anche le etichette per ogni box plot. Abbiamo impostato l'attributo vert =0, il che significa che tutti i grafici saranno in modalità orizzontale.