Gestapelte Balkendiagramme mit Pythons Matplotlib
Wie erwartet, ist das Diagramm schwer zu lesen. Versuchen wir es mit dem gestapelten Balkendiagramm und fügen ein paar Anpassungen hinzu.
Zunächst können wir die Werte vor dem Plotten sortieren, wodurch wir ein besseres Gefühl für die Reihenfolge bekommen und die Balken leichter vergleichen können. Wir werden dies mit der Spalte „Globaler Umsatz“ tun, da sie die Gesamtsumme enthält.
## sort values
df_grouped = df_grouped.sort_values('Global_Sales')
df_grouped
Zur Erstellung eines geclusterten Balkendiagramms haben wir eine Darstellung für jede Region verwendet, bei der der Parameter „Breite“ und die Anpassungen der x-Achse uns halfen, die vier Bereiche jeder Plattform einzupassen.
Auch für die Erstellung von Stapelbalkendiagrammen verwenden wir für jede Region ein Diagramm. Diesmal verwenden wir den Parameter bottom/left, um Matplotlib mitzuteilen, was vor den Balken kommt, die wir zeichnen.
plt.bar(, )
plt.bar(, , bottom = )
plt.show()plt.barh(, )
plt.barh(, , left = )
plt.show()
Cool. Wir können eine Schleife verwenden, um die Balken darzustellen, indem wir im ersten Satz eine Liste von Nullen für den Parameter „bottom“ übergeben und die folgenden Werte für die nächsten Bereiche akkumulieren.
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()
Gut, das ist viel lesbarer als das letzte.
Es ist wichtig, sich den Zweck dieses Diagramms vor Augen zu halten, bevor man versucht, irgendwelche Erkenntnisse zu gewinnen. Es geht darum, die Gesamtverkäufe der Plattformen zu vergleichen und die Zusammensetzung der einzelnen Plattformen zu verstehen.
Ein Vergleich der Gesamtzahlen über verschiedene Felder hinweg und ein Vergleich der Regionen innerhalb eines Balkens ist in Ordnung. Der Vergleich von Regionen aus verschiedenen Balken kann dagegen sehr irreführend sein.
In diesem Fall können wir die NA-Region über die Balken hinweg vergleichen, da sie für jeden Balken denselben Ausgangspunkt hat, aber es ist nicht so einfach, die anderen zu vergleichen. Die X360 zum Beispiel hat einen niedrigeren Wert für JP als die PS2, aber es ist schwer zu vergleichen, ob der andere Wert höher oder niedriger ist als der der Wii.
Angenommen, wir ändern die Reihenfolge des Stapels, und sortieren die Datensätze nach „Sonstige Umsätze“. Es sollte leichter zu erkennen sein, was wichtiger ist.
## sort values
df_grouped = df_grouped.sort_values('Other_Sales')fields =
colors =
labels =
Es gibt zwei wesentliche Elemente in dieser Visualisierung, die Reihenfolge der Kategorien im Stapel der Balken und die Reihenfolge der Zeilen.
Wenn wir eine Region hervorheben wollen, können wir die Datensätze nach dem gewählten Feld sortieren und es als den Balken ganz links verwenden.
Wenn nicht, können wir die Datensätze nach der Gesamtsumme sortieren und die Stapel mit den Kategorien, die höhere Werte haben, zuerst anordnen.