Box Plot v Pythonu pomocí Matplotlib
A Box Plot je také známý jako Whisker spiknutí je vytvořen pro zobrazení souhrnu sady hodnot dat s vlastnostmi jako minimum, první kvartil, medián, třetí kvartil a maximum. V krabicovém grafu je vytvořen rámeček od prvního kvartilu po třetí kvartil, je zde také svislá čára, která prochází rámečkem na mediánu. Zde osa x označuje data, která mají být vykreslena, zatímco osa y ukazuje rozdělení frekvence.
Vytváření krabicového grafu
Modul matplotlib.pyplot knihovny matplotlib poskytuje funkci boxplot(), pomocí které můžeme vytvářet krabicové grafy.
Syntax:
matplotlib.pyplot.boxplot(data, notch=None, vert=None, patch_artist=None, widths=None)
Parametry:
| Atribut | Hodnota |
|---|---|
| data | pole nebo posloupnost pole, které má být vykresleno |
| zářez | volitelný parametr přijímá booleovské hodnoty |
| Zelená | volitelný parametr přijímá booleovské hodnoty false a true pro horizontální a vertikální graf |
| bootstrap | volitelný parametr přijímá int určuje intervaly kolem vrubových boxplotů |
| uživatelské mediány | volitelný parametr akceptuje pole nebo sekvenci dimenzí pole kompatibilní s daty |
| pozice | volitelný parametr přijímá pole a nastavuje polohu polí |
| šířky | volitelný parametr přijímá pole a nastavuje šířku polí |
| patch_artist | volitelný parametr s booleovskými hodnotami |
| štítky | sekvence řetězců nastavuje štítek pro každou datovou sadu |
| střední čára | volitelné s booleovskou hodnotou pokusit se vykreslit střední čáru jako plnou šířku rámečku |
| objednat | volitelný parametr nastavuje pořadí boxplotu |
Hodnoty dat předané metodě ax.boxplot() mohou být pole Numpy nebo Python seznam nebo Nice polí. Vytvořme krabicový graf pomocí numpy.random.normal() k vytvoření některých náhodných dat, jako argumenty bere průměr, směrodatnou odchylku a požadovaný počet hodnot.
Příklad:
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()> |
Výstup:
Přizpůsobení krabicového grafu
Matplotlib.pyplot.boxplot() poskytuje nekonečné možnosti přizpůsobení krabicového grafu. Atribut notch = True vytváří formát notch pro krabicový graf, patch_artist = True vyplní krabici barvami, různým krabicím můžeme nastavit různé barvy. Atribut vert = 0 vytváří horizontální krabicový graf. štítky mají stejné rozměry jako číselné datové sady.
Příklad 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()> |
Výstup:
Příklad 2: Pokusme se upravit výše uvedený graf pomocí některých přizpůsobení:
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()> |
Výstup: