logo

Box Plot v Pythonu pomocí Matplotlib

Co je Box Plot?

Krabicový graf je způsob, jak vizualizovat rozložení dat pomocí rámečku a několika svislých čar. To je známé jako spiknutí vousů. Data lze distribuovat mezi pět klíčových rozsahů, které jsou následující:

    Minimální: Q1-1,5*IQR1. kvartil(Q1): 25. percentilMedián:50. percentil3. čtvrtletí(Q3): 75. percentilMaximum: Q3+1,5*IQR

Zde IQR představuje Rozsah interkvartilní který začíná prvním kvartilem (Q1) a končí třetím kvartilem (Q3).

Box Plot vizualizace

Box Plot v Pythonu pomocí Matplotlib

V krabicovém grafu se body, které jsou mimo rozsah, nazývají odlehlé hodnoty. Můžeme vytvořit krabicový graf dat, abychom určili následující:

  • Počet odlehlých hodnot v datové sadě
  • Jsou data zkreslená nebo ne
  • Rozsah dat

Rozsah dat od minima do maxima se nazývá limit whiskeru. V Pythonu použijeme modul pyplot modulu matplotlib, který má vestavěnou funkci nazvanou boxplot(), která dokáže vytvořit krabicový graf libovolné datové sady.

Syntax:

 matplotlib.pyplot.boxplot(data,notch=none,vert=none,patch_artist,widths=none) 

Ve funkci boxplot() máme spoustu atributů, které lze použít k vytvoření atraktivnějšího a úžasnějšího krabicového grafu souboru dat.

    data: Data by měla být pole nebo sekvence polí, která budou vykreslena.zářez: Tento parametr přijímá pouze booleovské hodnoty, buď true nebo false.Zelená: Tento atribut přijímá booleovskou hodnotu. Pokud je nastavena na hodnotu true, bude graf svislý. V opačném případě bude horizontální.pozice: Přijímá pole celých čísel, které definuje pozici boxu.šířky: Přijímá pole celých čísel, které definuje šířku rámečku.patch_artist: tento parametr přijímá booleovské hodnoty, buď true nebo false, a toto je volitelný parametr.štítky: Toto přijímá řetězce, které definují popisky pro každý datový bodstřední čára: Přijímá booleovskou hodnotu a je volitelná.objednat: Nastavuje pořadí boxplotu.bootstrap: Přijímá celočíselnou hodnotu, která určuje rozsah vrubového boxplotu.

Příklad1:

Vytvoříme náhodný soubor dat numpy pole a vytvoříme krabicový graf.

 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() 

Výstup:

Box Plot v Pythonu pomocí Matplotlib

Vysvětlení:

Ve výše uvedeném kódu jsme v prvé řadě importovali knihovny numpy a matplotlib do kódu. Poté jsme vytvořili náhodnou datovou sadu a vykreslili krabicový graf pomocí funkce boxplot().

Příklad2:

Můžeme vytvořit více krabicových grafů současně ve stejném souboru.

 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() 

Výstup:

Box Plot v Pythonu pomocí Matplotlib

Vysvětlení:

Ve výše uvedeném kódu máme čtyři datové sady pomocí náhodných metod numpy. Poté jsme vytvořili seznam čtyř datových sad a použili jsme tuto funkci uvnitř boxplot().

Příklad 3:

K přizpůsobení grafu můžeme použít některé atributy funkce boxplot().

 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() 

Výstup:

Box Plot v Pythonu pomocí Matplotlib

Vysvětlení:

Ve výše uvedeném kódu jsme vytvořili čtyři datové sady pomocí náhodných funkcí a nastavili je do seznamu. Nyní jsme nastavili různé barvy pro každý krabicový graf pomocí seznamu barev a pomocí funkce set_facecolor().

Nastavili jsme šířku čáry každého krabicového grafu a také jsme nastavili popisky pro každý krabicový graf. Nastavili jsme atribut vert =0, což znamená, že všechny grafy budou v horizontálním režimu.