Š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:
Ovdje IQR predstavlja Interkvartilni Raspon koji počinje od prvog kvartila (Q1) i završava u trećem kvartilu (Q3).
Box Plot vizualizacija
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.
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:
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
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:
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.