logo

Box Plot Python naudojant Matplotlib

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:

    Minimumas: Q1-1,5*IQR1-asis kvartilis(Q1): 25 procentilisMediana:50 procentilis3 ketvirtis(Q3): 75 procentilisMaksimalus: Q3+1,5*IQR

Čia IQR reiškia InterQuartile diapazonas kuris prasideda nuo pirmojo kvartilio (Q1) ir baigiasi trečiuoju kvartiliu (Q3).

Box Plot vizualizacija

Box Plot Python naudojant Matplotlib

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į.

    duomenis: duomenys turi būti masyvas arba masyvų seka, kuri bus nubraižyta.įpjova: Šis parametras priima tik Būlio reikšmes, arba true, arba false.Žalias: Šis atributas priima Būlio reikšmę. Jei nustatyta kaip tiesa, grafikas bus vertikalus. Priešingu atveju jis bus horizontalus.padėtis: Priima sveikųjų skaičių masyvą, kuris apibrėžia laukelio padėtį.pločiai: Jis priima sveikųjų skaičių masyvą, kuris apibrėžia laukelio plotį.patch_artist: šis parametras priima Būlio reikšmes, tiesa arba klaidingas, ir tai yra pasirenkamas parametras.etiketės: priimamos eilutės, apibrėžiančios kiekvieno duomenų taško etiketesvidurkio linija: ji priima loginę reikšmę ir yra neprivaloma.įsakymas: nustato laukelio tvarką.bootstrap: Priima sveikojo skaičiaus reikšmę, kuri nurodo įpjovos laukelio diapazoną.

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:

Box Plot Python naudojant Matplotlib

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:

Box Plot Python naudojant Matplotlib

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:

Box Plot Python naudojant Matplotlib

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.