Box Plot în Python folosind Matplotlib
A Box Plot mai este cunoscut ca Whisker plot este creat pentru a afișa rezumatul setului de valori de date având proprietăți precum minim, primul quartil, median, al treilea quartil și maxim. În diagrama cu casete, este creată o casetă de la primul quartila la al treilea quartila, există și o linie verticală care trece prin casetă la mediană. Aici axa x indică datele care trebuie trasate în timp ce axa y arată distribuția frecvenței.
Crearea Box Plot
Modulul matplotlib.pyplot al bibliotecii matplotlib oferă funcția boxplot() cu ajutorul căreia putem crea box plot.
Sintaxă:
matplotlib.pyplot.boxplot(data, notch=None, vert=None, patch_artist=None, widths=None)
Parametri:
| Atribut | Valoare |
|---|---|
| date | matrice sau secvență de matrice care urmează să fie reprezentată |
| crestătură | parametrul opțional acceptă valori booleene |
| Verde | parametrul opțional acceptă valori booleene false și adevărate pentru graficul orizontal și respectiv vertical |
| bootstrap | parametrul opțional accepts int specifică intervalele din jurul boxplot-urilor crestate |
| usermedians | parametrul opțional acceptă o matrice sau o secvență de dimensiune a matricei compatibilă cu datele |
| pozitii | parametrul opțional acceptă matrice și setează poziția casetelor |
| lățimi | parametrul opțional acceptă matrice și setează lățimea casetelor |
| patch_artist | parametru opțional având valori booleene |
| etichete | secvența de seturi de șiruri de caractere etichetă pentru fiecare set de date |
| linia medie | opțional având valoare booleană încercați să redați linia medie ca lățime completă a casetei |
| Ordin | parametrul opțional stabilește ordinea boxplot-ului |
Valorile datelor date metodei ax.boxplot() pot fi o matrice Numpy sau o listă Python sau un tuplu de matrice. Să creăm diagrama cu casete utilizând numpy.random.normal() pentru a crea niște date aleatorii, este nevoie de media, deviația standard și numărul dorit de valori ca argumente.
Exemplu:
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()> |
Ieșire:
Personalizarea Box Plot
Matplotlib.pyplot.boxplot() oferă posibilități infinite de personalizare pentru diagrama de casete. Atributul Notch = True creează formatul notch pentru diagrama de casete, patch_artist = True umple diagrama de casete cu culori, putem seta culori diferite pentru casete diferite. Atributul vert = 0 creează diagramă de casetă orizontală. etichetele au aceleași dimensiuni ca și seturile de date numerice.
Exemplul 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()> |
Ieșire:
Exemplul 2: Să încercăm să modificăm diagrama de mai sus cu unele dintre personalizări:
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()> |
Ieșire: