Gestapelde staafdiagrammen met Python’s Matplotlib
Zoals verwacht, is het diagram moeilijk te lezen. Laten we het gestapelde staafdiagram proberen en een paar aanpassingen doen.
Voreerst kunnen we de waarden sorteren voor het plotten, wat ons een beter gevoel van volgorde geeft en het makkelijker maakt om de staven te vergelijken. We zullen dit doen met de kolom ‘Totale verkoop’, omdat deze het totaal bevat.
## sort values df_grouped = df_grouped.sort_values('Global_Sales') df_grouped
Enkele records in het gegevensframe – Afbeelding door auteur
Eerder, om een geclusterd staafdiagram te bouwen, gebruikten we een plot voor elke regio waarbij de breedteparameter en aanpassingen in de x-as ons hielpen om de vier gebieden van elk platform in te passen.
Ook voor het plotten van stapel staafdiagrammen gebruiken we een plot voor elke regio. Deze keer gebruiken we de parameter onder/links om Matplotlib te vertellen wat er vóór de staven komt die we tekenen.
plt.bar(, ) plt.bar(, , bottom = ) plt.show()plt.barh(, ) plt.barh(, , left = ) plt.show()
Stacked Bar Charts (Vertical/ Horizontal) – Image by Author Cool. We kunnen een lus gebruiken om de balken te plotten, waarbij we een lijst met nullen doorgeven voor de parameter ‘onder’ in de eerste reeks en de volgende waarden accumuleren voor de volgende gebieden.
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 Geweldig, dit is veel leesbaarder dan de vorige.
Het is belangrijk om het doel van deze grafiek in gedachten te houden voordat we proberen er enig inzicht uit te halen. Het idee hier is om de totale verkoop van de platforms te vergelijken en de samenstelling van elk platform te begrijpen.
Het vergelijken van totalen over velden en het vergelijken van regio’s binnen één balk is ok. Het vergelijken van regio’s uit verschillende balken, aan de andere kant, kan zeer misleidend zijn.
In dit geval kunnen we de NA regio vergelijken over de balken heen, omdat het hetzelfde startpunt heeft voor elke balk, maar het is niet zo gemakkelijk om de anderen te vergelijken. Neem de X360, bijvoorbeeld, het heeft een lagere waarde voor JP dan de PS2, maar het is moeilijk om te vergelijken of de andere waarde is hoger of lager dan de Wii.
Vergelijkbare waarde – Afbeelding door auteur
Onvergelijkbare waarde – Afbeelding door auteur Voorstel dat we de volgorde van de stapel wijzigen, met Andere verkopen als eerste balk, en de records sorteren op Andere verkopen.
## sort values df_grouped = df_grouped.sort_values('Other_Sales')fields = colors = labels =
Gestapeld staafdiagram, met de nadruk op de categorie Overige – Afbeelding door auteur
Er zijn twee essentiële elementen in deze visualisatie, de volgorde van de categorieën in de stapel met staven en de volgorde van de rijen.
Als we één regio willen benadrukken, kunnen we de records sorteren op het gekozen veld en dat als de meest linkse balk gebruiken.
Als we dat niet willen, kunnen we de records op het totaal sorteren en de categorieën met de hoogste waarden als eerste rangschikken.