Stacked Bar Charts with Python’s Matplotlib

nov 17, 2021
admin

Amint az várható volt, a diagram nehezen olvasható. Próbáljuk ki az egymásra helyezett oszlopdiagramot, és tegyünk hozzá néhány módosítást.

Először is, az ábrázolás előtt rendezhetjük az értékeket, így jobban érzékeljük a sorrendet, és könnyebben összehasonlíthatjuk a sávokat. Ezt a “Globális értékesítés” oszloppal fogjuk megtenni, mivel ez tartalmazza a teljes összeget.

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

Az adatkeret néhány rekordja – Kép a szerzőtől

A korábbiakban a klaszterezett oszlopdiagram elkészítéséhez minden régióhoz egy ábrát használtunk, ahol a szélességi paraméter és az x-tengely kiigazítása segített abban, hogy az egyes platformok négy területére illeszkedjen.

Hasonlóképpen, a halmozott oszlopdiagramok ábrázolásához minden egyes régióhoz egy-egy plotot fogunk használni. Ezúttal a bottom/left paramétert fogjuk használni, hogy megmondjuk a Matplotlibnek, mi álljon az általunk rajzolt sávok előtt.

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

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

Cool. Egy ciklus segítségével ábrázolhatjuk a sávokat, átadva egy nullákból álló listát az ‘bottom’ paraméterhez az első sorozatban, és felhalmozva a következő értékeket a következő régiókhoz.

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

Nagyszerű, ez sokkal olvashatóbb, mint az előző.

Nem szabad elfelejteni ennek a diagramnak a célját, mielőtt megpróbálnánk bármilyen betekintést nyerni. Az ötlet itt az, hogy összehasonlítsuk a platformok összesített eladásait, és megértsük az egyes platformok összetételét.

A mezők közötti összegek összehasonlítása és a régiók összehasonlítása egy sávon belül rendben van. A különböző sávokból származó régiók összehasonlítása viszont nagyon félrevezető lehet.

Ez esetben az NA régiót össze tudjuk hasonlítani a sávok között, mivel minden sávban ugyanaz a kezdőpontja, de a többit nem olyan könnyű összehasonlítani. Vegyük például az X360-at, annak alacsonyabb a JP értéke, mint a PS2-nek, de nehéz összehasonlítani, hogy a Többiek értéke magasabb vagy alacsonyabb, mint a Wii-é.

összehasonlítható érték – A szerző képe

Vehetetlen érték – A szerző képe

Tegyük fel, hogy megváltoztatjuk a verem sorrendjét, úgy, hogy az Egyéb eladások legyen az első sáv, és a rekordokat az Egyéb eladások szerint rendezzük. Könnyebben meg kellene állapítani, hogy melyik a jelentősebb.

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

Soros oszlopdiagram, kiemelve az Egyéb kategóriát – Kép a szerzőtől

Ez a megjelenítés két lényeges elemet tartalmaz, a kategóriák sorrendjét az oszlophalmazban és a sorok sorrendjét.

Ha egy régiót szeretnénk kiemelni, akkor a rekordokat a kiválasztott mezővel rendezhetjük, és azt használhatjuk a bal szélső sávként.

Ha nem, akkor a rekordokat az összeg alapján is rendezhetjük, és a halmokat a magasabb értékkel rendelkező kategóriák szerint rendezhetjük elöl.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.