Box Plot i Python med Matplotlib
A Box Plot är också känd som Morrhår tomt skapas för att visa sammanfattningen av uppsättningen datavärden som har egenskaper som minimum, första kvartil, median, tredje kvartil och maximum. I boxplotten skapas en ruta från första kvartilen till tredje kvartilen, en vertikal linje finns också där som går genom boxen vid medianen. Här betecknar x-axeln de data som ska plottas medan y-axeln visar frekvensfördelningen.
Skapa Box Plot
Matplotlib.pyplot-modulen i matplotlib-biblioteket tillhandahåller boxplot()-funktion med hjälp av vilken vi kan skapa boxplots.
Syntax:
matplotlib.pyplot.boxplot(data, notch=Ingen, vert=Ingen, patch_artist=Ingen, widths=Ingen)
Parametrar:
| Attribut | Värde |
|---|---|
| data | array eller sekvens av array som ska plottas |
| hack | valfri parameter accepterar booleska värden |
| Grön | optional parameter accepterar booleska värden false och true för horisontell respektive vertikal plot |
| bootstrap | valfri parameter accepterar int specificerar intervall runt skårade boxplots |
| användarmedianer | valfri parameter accepterar array eller sekvens av arraydimension som är kompatibel med data |
| positioner | valfri parameter accepterar array och ställer in boxarnas position |
| bredder | valfri parameter accepterar array och ställer in bredden på rutor |
| patch_artist | valfri parameter med booleska värden |
| etiketter | sekvens av strängar sätter etikett för varje datamängd |
| medellinje | valfritt med booleskt värde försök att återge medellinjen som full bredd på rutan |
| beställa | valfri parameter ställer in ordningen på boxplotten |
Datavärdena som ges till metoden ax.boxplot() kan vara en Numpy-array eller Python-lista eller Tuple of arrays. Låt oss skapa boxplotten genom att använda numpy.random.normal() för att skapa några slumpmässiga data, det tar medelvärde, standardavvikelse och önskat antal värden som argument.
Exempel:
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()> |
Produktion:
Anpassa Box Plot
Matplotlib.pyplot.boxplot() ger oändliga anpassningsmöjligheter till boxplotten. Attributet Notch = True skapar notch-formatet till boxplotten, patch_artist = True fyller boxplotten med färger, vi kan ställa in olika färger på olika rutor. Attributet vert = 0 skapar horisontell boxplot. Etiketter har samma dimensioner som nummerdatauppsättningarna.
Exempel 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()> |
Produktion:
Exempel 2: Låt oss försöka modifiera ovanstående plot med några av anpassningarna:
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()> |
Produktion: