Box Plot i Python ved hjelp av Matplotlib
EN Box Plot er også kjent som Whisker plot er opprettet for å vise sammendraget av settet med dataverdier som har egenskaper som minimum, første kvartil, median, tredje kvartil og maksimum. I boksplotten lages det en boks fra første kvartil til tredje kvartil, en vertikal linje er også der som går gjennom boksen ved medianen. Her angir x-aksen dataene som skal plottes mens y-aksen viser frekvensfordelingen.
Opprette boksplott
Matplotlib.pyplot-modulen til matplotlib-biblioteket gir boxplot()-funksjonen ved hjelp av hvilken vi kan lage boksplott.
Syntaks:
matplotlib.pyplot.boxplot(data, notch=Ingen, vert=Ingen, patch_artist=Ingen, bredder=Ingen)
Parametere:
| Egenskap | Verdi |
|---|---|
| data | array eller sekvens av array som skal plottes |
| hakk | valgfri parameter godtar boolske verdier |
| Grønn | valgfri parameter aksepterer boolske verdier false og true for henholdsvis horisontal og vertikal plot |
| Støvelhempe | valgfri parameter aksepterer int spesifiserer intervaller rundt hakkede boksplott |
| brukermedianer | valgfri parameter aksepterer matrise eller sekvens av matrisedimensjon som er kompatibel med data |
| stillinger | valgfri parameter aksepterer array og setter plasseringen av bokser |
| bredder | valgfri parameter godtar array og setter bredden på boksene |
| patch_artist | valgfri parameter som har boolske verdier |
| etiketter | sekvens av strenger setter etikett for hvert datasett |
| middellinje | valgfritt med boolsk verdi prøv å gjengi middellinje som full bredde på boksen |
| rekkefølge | valgfri parameter angir rekkefølgen på boksplotten |
Dataverdiene gitt til ax.boxplot()-metoden kan være en Numpy-matrise eller Python-liste eller Tuple of arrays. La oss lage boksplottene ved å bruke numpy.random.normal() for å lage noen tilfeldige data, det tar gjennomsnitt, standardavvik og ønsket antall verdier som argumenter.
Eksempel:
Python3
# Import libraries> import> matplotlib.pyplot as plt> import> numpy as np> # Creating dataset> np.random.seed(> 10> )> data> => np.random.normal(> 100> ,> 20> ,> 200> )> fig> => plt.figure(figsize> => (> 10> ,> 7> ))> # Creating plot> plt.boxplot(data)> # show plot> plt.show()> |
Produksjon:
Tilpasse boksplott
Matplotlib.pyplot.boxplot() gir uendelige tilpasningsmuligheter til boksplotten. Attributten Notch = True lager hakkformatet til boksplotten, patch_artist = True fyller boksplotten med farger, vi kan sette forskjellige farger til forskjellige bokser. Attributten vert = 0 lager horisontal boksplott. etiketter har samme dimensjoner som talldatasettene.
Eksempel 1:
Python3
# Import libraries> import> matplotlib.pyplot as plt> import> numpy as np> # Creating dataset> np.random.seed(> 10> )> data_1> => np.random.normal(> 100> ,> 10> ,> 200> )> data_2> => np.random.normal(> 90> ,> 20> ,> 200> )> data_3> => np.random.normal(> 80> ,> 30> ,> 200> )> data_4> => np.random.normal(> 70> ,> 40> ,> 200> )> data> => [data_1, data_2, data_3, data_4]> fig> => plt.figure(figsize> => (> 10> ,> 7> ))> # Creating axes instance> ax> => fig.add_axes([> 0> ,> 0> ,> 1> ,> 1> ])> # Creating plot> bp> => ax.boxplot(data)> # show plot> plt.show()> |
Produksjon:
Eksempel 2: La oss prøve å endre plottet ovenfor med noen av tilpasningene:
Python3
# Import libraries> import> matplotlib.pyplot as plt> import> numpy as np> # Creating dataset> np.random.seed(> 10> )> data_1> => np.random.normal(> 100> ,> 10> ,> 200> )> data_2> => np.random.normal(> 90> ,> 20> ,> 200> )> data_3> => np.random.normal(> 80> ,> 30> ,> 200> )> data_4> => np.random.normal(> 70> ,> 40> ,> 200> )> data> => [data_1, data_2, data_3, data_4]> fig> => plt.figure(figsize> => (> 10> ,> 7> ))> ax> => fig.add_subplot(> 111> )> # Creating axes instance> bp> => ax.boxplot(data, patch_artist> => True> ,> > notch> => 'True'> , vert> => 0> )> colors> => [> '#0000FF'> ,> '#00FF00'> ,> > '#FFFF00'> ,> '#FF00FF'> ]> for> patch, color> in> zip> (bp[> 'boxes'> ], colors):> > patch.set_facecolor(color)> # changing color and linewidth of> # whiskers> for> whisker> in> bp[> 'whiskers'> ]:> > whisker.> set> (color> => '#8B008B'> ,> > linewidth> => 1.5> ,> > linestyle> => ':'> )> # changing color and linewidth of> # caps> for> cap> in> bp[> 'caps'> ]:> > cap.> set> (color> => '#8B008B'> ,> > linewidth> => 2> )> # changing color and linewidth of> # medians> for> median> in> bp[> 'medians'> ]:> > median.> set> (color> => 'red'> ,> > linewidth> => 3> )> # changing style of fliers> for> flier> in> bp[> 'fliers'> ]:> > flier.> set> (marker> => 'D'> ,> > color> => '#e7298a'> ,> > alpha> => 0.5> )> > # x-axis labels> ax.set_yticklabels([> 'data_1'> ,> 'data_2'> ,> > 'data_3'> ,> 'data_4'> ])> # Adding title> plt.title(> 'Customized box plot'> )> # Removing top axes and right axes> # ticks> ax.get_xaxis().tick_bottom()> ax.get_yaxis().tick_left()> > # show plot> plt.show()> |
Produksjon: