logo

Box Plot u Pythonu koristeći Matplotlib

Što je Box Plot?

Box plot način je vizualizacije distribucije podataka pomoću okvira i okomitih linija. Poznat je kao zaplet brkova. Podaci se mogu raspodijeliti između pet ključnih raspona, koji su sljedeći:

    Minimum: Q1-1,5*IQR1. kvartil(Q1): 25. percentilMedijan:50. percentil3. četvrtina(Q3): 75. percentilMaksimum: Q3+1,5*IQR

Ovdje IQR predstavlja Interkvartilni Raspon koji počinje od prvog kvartila (Q1) i završava u trećem kvartilu (Q3).

Box Plot vizualizacija

Box Plot u Pythonu koristeći Matplotlib

U okvirnom dijagramu, one točke koje su izvan raspona nazivaju se izvanrednim vrijednostima. Možemo izraditi okvirni dijagram podataka kako bismo odredili sljedeće:

  • Broj outliera u skupu podataka
  • Jesu li podaci iskrivljeni ili ne
  • Raspon podataka

Raspon podataka od minimuma do maksimuma naziva se granica brkova. U Pythonu ćemo koristiti modul pyplot modula matplotlib, koji ima ugrađenu funkciju pod nazivom boxplot() koja može stvoriti okvirni dijagram bilo kojeg skupa podataka.

Sintaksa:

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

U funkciji boxplot() imamo mnogo atributa koji se mogu koristiti za stvaranje atraktivnijeg i nevjerojatnijeg okvirnog dijagrama skupa podataka.

    podaci: Podaci bi trebali biti niz ili niz nizova koji će se iscrtati.usjek: Ovaj parametar prihvaća samo Booleove vrijednosti, bilo true ili false.zelena: Ovaj atribut prihvaća Booleovu vrijednost. Ako je postavljeno na true, tada će grafikon biti okomit. Inače će biti vodoravna.položaj: Prihvaća niz cijelih brojeva koji definira položaj okvira.širine: Prihvaća niz cijelih brojeva koji definira širinu okvira.patch_umjetnik: ovaj parametar prihvaća Booleove vrijednosti, bilo true ili false, a ovo je izborni parametar.etikete: Ovo prihvaća nizove koji definiraju oznake za svaku podatkovnu točkusredišnja linija: Prihvaća Booleovu vrijednost i nije obavezan.narudžba: Postavlja redoslijed okvira.bootstrap: Prihvaća vrijednost cijelog broja, koja specificira raspon urezane kutije.

Primjer1:

Stvorit ćemo nasumični skup podataka niza numpy i izraditi okvirni dijagram.

 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() 

Izlaz:

Box Plot u Pythonu koristeći Matplotlib

Obrazloženje:

U gornjem kodu, prije svega, uvezli smo biblioteke numpy i matplotlib u kod. Zatim smo izradili nasumični skup podataka i iscrtali okvirni dijagram pomoću funkcije boxplot().

Primjer2:

U istoj datoteci možemo stvoriti više kutija istovremeno.

 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() 

Izlaz:

if else if else java
Box Plot u Pythonu koristeći Matplotlib

Obrazloženje:

U gornjem kodu imamo četiri skupa podataka koristeći nasumične metode numpyja. Zatim smo izradili popis od četiri skupa podataka i koristimo ovu unutarnju funkciju boxplot().

Primjer 3:

Možemo koristiti neke atribute funkcije boxplot() za prilagodbu crteža.

 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() 

Izlaz:

Box Plot u Pythonu koristeći Matplotlib

Obrazloženje:

U gornjem kodu stvorili smo četiri skupa podataka koristeći nasumične funkcije i postavili ih na popis. Sada smo postavili različite boje za svaki dijagram okvira pomoću popisa boja i pomoću funkcije set_facecolor().

Postavili smo širinu linije svake kutije i također postavili oznake za svaku kutiju. Postavili smo atribut vert =0, što znači da će sve plohe biti u horizontalnom načinu rada.