Stacked Bar Charts with Python’s Matplotlib

lis 17, 2021
admin

Jak można się spodziewać, wykres jest trudny do odczytania. Wypróbujmy wykres słupkowy i dodajmy kilka poprawek.

Po pierwsze, możemy posortować wartości przed wykreśleniem, co da nam lepsze poczucie kolejności i ułatwi porównanie słupków. Zrobimy to z kolumną „Sprzedaż globalna”, ponieważ ma ona wartość całkowitą.

## sort values
df_grouped = df_grouped.sort_values('Global_Sales')
df_grouped

Niektóre rekordy w ramce danych – Image by Author

Wcześniej, aby zbudować wykres słupkowy, użyliśmy wykresu dla każdego regionu, gdzie parametr szerokości i zmiany w osi x pomogły nam dopasować cztery obszary każdej platformy.

Podobnie, do wykreślania wykresów słupkowych stosu, użyjemy wykresu dla każdego regionu. Tym razem użyjemy parametru bottom/left, aby powiedzieć Matplotlibowi, co znajduje się przed paskami, które rysujemy.

plt.bar(, )
plt.bar(, , bottom = )
plt.show()plt.barh(, )
plt.barh(, , left = )
plt.show()

Stacked Bar Charts (Vertical/ Horizontal) – Image by Author

Cool. Możemy użyć pętli do wykreślenia słupków, przekazując listę zer dla parametru 'bottom’ w pierwszym zestawie i kumulując następujące wartości dla kolejnych regionów.

fields = 
colors =
labels = # figure and axis
fig, ax = plt.subplots(1, figsize=(12, 10))# plot bars
left = len(df_grouped) *
for idx, name in enumerate(fields):
plt.barh(df_grouped.index, df_grouped, left = left, color=colors)
left = left + df_grouped# title, legend, labels
plt.title('Video Game Sales By Platform and Region\n', loc='left')
plt.legend(labels, bbox_to_anchor=(), ncol=4, frameon=False)
plt.xlabel('Millions of copies of all games')# remove spines
ax.spines.set_visible(False)
ax.spines.set_visible(False)
ax.spines.set_visible(False)
ax.spines.set_visible(False)# adjust limits and draw grid lines
plt.ylim(-0.5, ax.get_yticks() + 0.5)
ax.set_axisbelow(True)
ax.xaxis.grid(color='gray', linestyle='dashed')plt.show()

Stacked Bar Chart – Image by Author

Świetnie, to jest o wiele bardziej czytelne niż poprzedni.

Ważne jest, aby pamiętać o celu tego wykresu, zanim spróbujemy wyciągnąć jakiekolwiek spostrzeżenia. Chodzi o to, aby porównać całkowitą sprzedaż platform i zrozumieć skład każdej platformy.

Porównanie sum w różnych polach i porównanie regionów wewnątrz jednego paska jest w porządku. Z drugiej strony, porównywanie regionów z różnych słupków może być bardzo mylące.

W tym przypadku możemy porównać region NA pomiędzy słupkami, ponieważ ma ten sam punkt startowy dla każdego słupka, ale nie jest tak łatwo porównać pozostałe. Weźmy na przykład X360, ma niższą wartość dla JP niż PS2, ale ciężko porównać czy Inni mają wyższą czy niższą wartość niż Wii.

Wartość porównawcza – Image by Author
.

Wartość nieporównywalna – Image by Author

Załóżmy, że zmieniamy kolejność stosu, z Inną sprzedażą jako pierwszym paskiem, i posortujemy rekordy według Innej sprzedaży. Powinno być łatwiej stwierdzić, która z nich jest bardziej znacząca.

## sort values
df_grouped = df_grouped.sort_values('Other_Sales')fields =
colors =
labels =

Stacked Bar Chart, emphasizing the Others category – Image by Author

W tej wizualizacji są dwa istotne elementy, kolejność kategorii w stosie słupków oraz kolejność wierszy.

Jeśli chcemy podkreślić jeden region, możemy posortować rekordy z wybranym polem i użyć go jako lewego skrajnego słupka.

Jeśli nie chcemy, możemy posortować rekordy po sumie i uporządkować stosy z kategoriami, które mają wyższe wartości jako pierwsze.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.