Stacked Bar Charts with Python’s Matplotlib

Lis 17, 2021
admin

Podle očekávání je graf špatně čitelný. Vyzkoušejme stohovaný sloupcový graf a přidejme několik úprav.

Především můžeme hodnoty před vykreslením seřadit, čímž získáme lepší přehled o pořadí a snáze sloupce porovnáme. Uděláme to se sloupcem „Globální tržby“, protože v něm je celkový součet.

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

Některé záznamy v datovém rámci – obrázek autora

Předtím jsme pro sestavení shlukového sloupcového grafu použili graf pro každou oblast, kde nám parametr šířky a úpravy na ose x pomohly přizpůsobit se čtyřem oblastem každé platformy.

Podobně pro vykreslení zásobníkových sloupcových grafů použijeme pro každou oblast vlastní graf. Tentokrát použijeme parametr dole/vlevo, abychom programu Matplotlib sdělili, co se nachází před sloupci, které kreslíme.

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

Stacked Bar Charts (Vertical/ Horizontal) – obrázek od autora

Cool. Pro vykreslení sloupců můžeme použít smyčku, přičemž v první sadě předáme seznam nul pro parametr „bottom“ a pro další oblasti nahromadíme následující hodnoty.

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

Skvělé, tohle je mnohem čitelnější než minulý graf.

Dříve než se pokusíte získat nějaké poznatky, je důležité si uvědomit účel tohoto grafu. Jde o to porovnat celkové prodeje platforem a pochopit složení jednotlivých platforem.

Porovnávání celkových hodnot napříč poli a porovnávání regionů uvnitř jednoho sloupce je v pořádku. Na druhou stranu porovnávání regionů z různých sloupců může být velmi zavádějící.

V tomto případě můžeme porovnat region NA napříč sloupci, protože má v každém sloupci stejný výchozí bod, ale není tak snadné porovnat ostatní. Vezměme si například X360, má nižší hodnotu pro JP než PS2, ale je těžké porovnat, zda je hodnota Others vyšší nebo nižší než u Wii.

Srovnatelná hodnota – obrázek od autora
.

Nesrovnatelná hodnota – Obrázek podle autora

Předpokládejme, že změníme pořadí zásobníku, s ostatními tržbami jako prvním sloupcem a seřadíme záznamy podle ostatních tržeb. Mělo by být snadněji poznat, který údaj je významnější.

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

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

V této vizualizaci jsou dva podstatné prvky, pořadí kategorií v zásobníku sloupců a pořadí řádků.

Pokud chceme zdůraznit jednu oblast, můžeme záznamy se zvoleným polem seřadit a použít je jako nejlevější sloupec.

Pokud nechceme, můžeme záznamy seřadit podle celkového součtu a seřadit hromádky s kategoriemi, které mají vyšší hodnoty jako první.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.