Stacked Bar Charts with Python’s Matplotlib
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
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()
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()
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.
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 =
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í.