Wykres pudełkowy w Pythonie przy użyciu Matplotlib
A Fabuła pudełkowa jest również znany jako Fabuła wąsów jest tworzony w celu wyświetlenia podsumowania zbioru wartości danych posiadających właściwości takie jak minimum, pierwszy kwartyl, mediana, trzeci kwartyl i maksimum. Na wykresie pudełkowym tworzony jest box od pierwszego kwartyla do trzeciego kwartyla, znajduje się tam również pionowa linia przechodząca przez box przy medianie. Tutaj oś x oznacza dane, które mają zostać wykreślone, podczas gdy oś y pokazuje rozkład częstotliwości.
Tworzenie wykresu pudełkowego
Moduł matplotlib.pyplot biblioteki matplotlib udostępnia funkcję boxplot(), za pomocą której możemy tworzyć wykresy pudełkowe.
Składnia:
matplotlib.pyplot.boxplot(data, notch=Brak, vert=Brak, patch_artist=Brak, szerokości=Brak)
Parametry:
| Atrybut | Wartość |
|---|---|
| dane | tablica lub sekwencja tablicy, która ma zostać wykreślona |
| karb | parametr opcjonalny akceptuje wartości logiczne |
| Zielony | parametr opcjonalny akceptuje wartości logiczne false i true odpowiednio dla wykresu poziomego i pionowego |
| bootstrap | opcjonalny parametr Accepts int określa odstępy wokół wykresów skrzynkowych z karbem |
| media użytkowników | parametr opcjonalny akceptuje tablicę lub sekwencję wymiarów tablicy zgodną z danymi |
| pozycje | parametr opcjonalny akceptuje tablicę i ustawia położenie pól |
| szerokości | parametr opcjonalny akceptuje tablicę i ustawia szerokość pól |
| patch_artysta | opcjonalny parametr posiadający wartości logiczne |
| etykiety | sekwencja ciągów ustawia etykietę dla każdego zestawu danych |
| linia średnia | opcjonalnie mając wartość logiczną, spróbuj renderować linię średnią jako pełną szerokość ramki |
| zamówienie | parametr opcjonalny ustawia kolejność wykresu pudełkowego |
Wartości danych przekazywane metodzie ax.boxplot() mogą być tablicą Numpy, listą Pythona lub krotką tablic. Utwórzmy wykres pudełkowy za pomocą funkcji numpy.random.normal() w celu utworzenia losowych danych, których argumentami będą średnia, odchylenie standardowe i żądana liczba wartości.
Przykład:
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()> |
Wyjście:
Dostosowywanie wykresu pudełkowego
Funkcja matplotlib.pyplot.boxplot() zapewnia nieograniczone możliwości dostosowywania wykresu pudełkowego. Atrybut notch = True tworzy format wcięcia na wykresie pudełkowym, patch_artist = True wypełnia wykres pudełkowy kolorami, możemy ustawić różne kolory dla różnych prostokątów. Atrybut vert = 0 tworzy poziomy wykres pudełkowy. etykiety mają takie same wymiary jak zbiory danych liczbowych.
Przykład 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()> |
Wyjście:
Przykład 2: Spróbujmy zmodyfikować powyższy wykres za pomocą niektórych dostosowań:
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()> |
Wyjście: