Kas yra Box Plot?
Dėžutės diagrama yra būdas vizualizuoti duomenų pasiskirstymą naudojant langelį ir kai kurias vertikalias linijas. Jis žinomas kaip ūsų siužetas. Duomenys gali būti paskirstyti tarp penkių pagrindinių diapazonų, kurie yra tokie:
Čia IQR reiškia InterQuartile diapazonas kuris prasideda nuo pirmojo kvartilio (Q1) ir baigiasi trečiuoju kvartiliu (Q3).
Box Plot vizualizacija
Dėžutės diagramoje tie taškai, kurie yra už diapazono, vadinami išskirtiniais. Galime sukurti duomenų langelį, kad nustatytų šiuos dalykus:
- Nukrypimų skaičius duomenų rinkinyje
- Ar duomenys iškreipti, ar ne
- Duomenų diapazonas
Duomenų diapazonas nuo minimumo iki didžiausio vadinamas ūsų riba. Python naudosime matplotlib modulio pyplot modulį, kuriame yra įmontuota funkcija, pavadinta boxplot(), kuri gali sukurti bet kurio duomenų rinkinio langelį.
Sintaksė:
matplotlib.pyplot.boxplot(data,notch=none,vert=none,patch_artist,widths=none)
Funkcijoje boxplot() turime daug atributų, kuriuos galima naudoti norint sukurti patrauklesnį ir nuostabesnį duomenų rinkinio langelį.
1 pavyzdys:
Sukursime atsitiktinį numpy masyvo duomenų rinkinį ir sukursime langelio diagramą.
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()
Išvestis:
Paaiškinimas:
Aukščiau pateiktame kode, visų pirma, į kodą importavome numpy ir matplotlib bibliotekas. Tada sukūrėme atsitiktinį duomenų rinkinį ir nubraižėme langelio diagramą naudodami funkciją boxplot ().
2 pavyzdys:
Tame pačiame faile vienu metu galime sukurti kelis langelius.
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()
Išvestis:
Paaiškinimas:
Aukščiau pateiktame kode turime keturis duomenų rinkinius, naudojant atsitiktinius numpy metodus. Tada sukūrėme keturių duomenų rinkinių sąrašą ir naudojame šią funkciją „boxplot()“.
3 pavyzdys:
Norėdami tinkinti brėžinį, galime naudoti kai kuriuos funkcijos boxplot() atributus.
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()
Išvestis:
Paaiškinimas:
Aukščiau pateiktame kode sukūrėme keturis duomenų rinkinius naudodami atsitiktines funkcijas ir nustatėme juos sąraše. Dabar mes nustatėme skirtingas kiekvieno langelio brėžinio spalvas, naudodami spalvų sąrašą ir naudodami funkciją set_facecolor().
Mes nustatėme kiekvieno langelio sklypo linijos plotį ir taip pat nustatėme kiekvieno dėžutės sklypo etiketes. Mes nustatėme atributą vert =0, o tai reiškia, kad visi sklypai bus horizontaliu režimu.