Gestapeltes Balkendiagramm mit zentrierten Beschriftungen
Problem:
Versuch, Datenbeschriftungen in einem gestapelten Balken zu zentrieren Das Diagramm kann eine Herausforderung sein, da das einfache Zentrieren der Beschriftungen möglicherweise keine perfekten Ergebnisse liefert.
Lösung 1: Pandas-Balkendiagramm mit bar_label()
- Verwenden Sie die Pandas .DataFrame.plot.bar() oder pandas.DataFrame.plot(kind='bar', stacked=True) Methoden.
- Verwenden Sie die Funktion matplotlib.pyplot.bar_label(), um die Beschriftungen automatisch in der zu zentrieren Balken.
Lösung 2: Explizite Beschriftung mit Rechteckeigenschaften
- Greifen Sie mit ax.patches auf die matplotlib.patches.Rectangle-Objekte für jeden Abschnitt zu.
- Berechnen Sie die Höhe, Breite, X- und Y-Koordinate für jedes Rechteck.
- Erstellen Sie eine Beschriftung mit F-Strings, einschließlich zusätzlichem Text, falls gewünscht.
- Zeichnen Sie die Beschriftungen mit ax.text() und richten Sie sie in der Mitte der entsprechenden Rechtecke aus.
Lösung 3: Seaborn Histplot
- Konvertieren den Datenrahmen mit pandas.melt() in eine Langform umwandeln.
- Plot mit seaborn.histplot() oder seaborn.displot() mit den Parametern multiple='stack' und discrete=True.
- Greifen Sie mit ax.containers auf die Patches zu und fahren Sie mit der Etikettenerstellung und -platzierung wie in Lösung 2 fort.
Lösungshinweise:
- Passen Sie Etiketten an für kleine Segmente mithilfe von ax.bar_label(c, labels=labels, label_type='center'), wobei labels eine Liste von Beschriftungen ist, die jedem Rechteck entsprechen.
- Verwenden Sie fmt=lambda x: f'{x: .0f}', um Zahlen ohne Dezimalstellen in Lösung 1 anzuzeigen.
- Für horizontale gestapelte Balken verwenden Sie kind='barh' in pandas.plot() und ändern Sie die Beschriftungsberechnung entsprechend.
Das obige ist der detaillierte Inhalt vonWie zentriere ich Datenbeschriftungen in gestapelten Balkendiagrammen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!