Stablede søjlediagrammer med Pythons Matplotlib

nov 17, 2021
admin

Som forventet er diagrammet svært at læse. Lad os prøve det stablede søjlediagram og tilføje et par justeringer.

Først kan vi sortere værdierne, før vi plotter, hvilket giver os en bedre fornemmelse af rækkefølge og gør det lettere at sammenligne søjlerne. Vi gør det med kolonnen “Globalt salg”, da den har totalen.

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

Nogle af posterne i datarammen – Image by Author

Førhen, for at opbygge et clusteret søjlediagram, brugte vi et plot for hver region, hvor breddeparameteren og justeringer i x-aksen hjalp os med at passe til hver platforms fire områder.

Sådan bruger vi et plot for hvert område til at tegne stablede søjlediagrammer. Denne gang bruger vi parameteren bund/venstre til at fortælle Matplotlib, hvad der kommer før de søjler, vi tegner.

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

Stablede søjlediagrammer (lodret/horisontalt) – Billede af Author

Cool. Vi kan bruge en sløjfe til at plotte søjlerne ved at videregive en liste af nuller til parameteren “bund” i det første sæt og akkumulere de følgende værdier til de næste regioner.

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

Great, dette er langt mere læseligt end det sidste.

Det er vigtigt at huske formålet med dette diagram, før man forsøger at uddrage nogen indsigt. Ideen her er at sammenligne platformenes samlede salg og forstå den enkelte platforms sammensætning.

Sammenligning af totaler på tværs af felter og sammenligning af regioner inden for en søjle er ok. Sammenligning af regioner fra forskellige søjler kan derimod være meget misvisende.

I dette tilfælde kan vi sammenligne NA-regionen på tværs af søjlerne, da den har samme udgangspunkt for hver søjle, men det er ikke så let at sammenligne de andre. Tag f.eks. X360, den har en lavere værdi for JP end PS2, men det er svært at sammenligne, om den anden værdi er højere eller lavere end Wii’en.

Sammenlignelig værdi – Billede af Author

Usammenlignelig værdi – Billede af Author

Sæt, at vi ændrer stakkens rækkefølge, med Andet salg som den første søjle, og sorterer posterne efter Andet salg. Det skulle være lettere at se, hvilken der er mest betydningsfuld.

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

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

Der er to væsentlige elementer i denne visualisering, nemlig rækkefølgen af kategorierne i stakken af søjler og rækkefølgen af rækker.

Hvis vi ønsker at fremhæve et område, kan vi sortere posterne med det valgte felt og bruge det som den yderste venstre bjælke.

Hvis vi ikke ønsker det, kan vi sortere posterne efter totalen og ordne stablerne med de kategorier, der har højere værdier først.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.