Heim >Backend-Entwicklung >Python-Tutorial >Wie zentriere ich Datenbeschriftungen in einem gestapelten Matplotlib-Balkendiagramm?

Wie zentriere ich Datenbeschriftungen in einem gestapelten Matplotlib-Balkendiagramm?

DDD
DDDOriginal
2024-11-24 00:41:10484Durchsuche

How to Center Data Labels in a Matplotlib Stacked Bar Chart?

Gestapeltes Balkendiagramm mit zentrierten Beschriftungen: Eine verbesserte Lösung mit bar_label

In matplotlib eine verfeinerte Methode zum genauen Zentrieren von Datenbeschriftungen in einem gestapelten Diagramm Balkendiagramme sind mit der Funktion bar_label verfügbar. So geht's:

  1. Erforderliche Module importieren: Beginnen Sie mit dem Importieren der wesentlichen Bibliotheken.
import pandas as pd
import matplotlib.pyplot as plt
  1. Erstellen und füllen Sie Ihren DataFrame: Um ein gestapeltes Balkendiagramm zu erstellen, wird empfohlen, einen Pandas-DataFrame zu verwenden. Hier ist ein Beispiel-DataFrame mit drei Spalten: „A“, „B“ und „C“.
# sample DataFrame
df = pd.DataFrame({'A': [45, 17, 47], 'B': [91, 70, 72], 'C': [68, 43, 13]})
  1. Plotten Sie das gestapelte Balkendiagramm: Nutzen Sie die DataFrame zum Zeichnen des gestapelten Balkendiagramms.
ax = df.plot(kind='bar', stacked=True, figsize=(8, 6), rot=0, xlabel='Class', ylabel='Count')
  1. Beschriften Sie das Balken: Jetzt beschriften wir die Balken und achten dabei darauf, dass sie zentriert sind. Verwenden Sie bar_label, um dies zu erreichen.
for c in ax.containers:
    ax.bar_label(c, label_type='center')

Optionale Anpassung

  • Null oder kleine Beschriftungen: Für Segmente mit Null oder kleine Werte, passen Sie die Sichtbarkeit der Beschriftung nach Bedarf an. Zeigen Sie die Werte beispielsweise nur an, wenn sie einen bestimmten Schwellenwert überschreiten, oder verwenden Sie die Option label_type='edge'.
labels = [v.get_height() if v.get_height() > 0 else '' for v in c]  # for segments with small or zero values
  • Benutzerdefiniertes Format: Ändern Sie die Beschriftung Format entsprechend Ihren Anforderungen.
ax.bar_label(c, fmt=lambda x: f'{x:.0f}' if x > 0 else '', label_type='center')  # to show no decimal places

Seaborn Alternative

Wenn Sie lieber mit Seaborn arbeiten, können Sie auch ein gestapeltes Balkendiagramm erstellen und die Balken beschriften.

  1. Bereiten Sie den DataFrame vor: Ähnlich Erstellen Sie für Matplotlib einen Pandas-DataFrame mit den Daten.
  2. DataFrame in „long“ konvertieren Form: Seaborn erfordert, dass der DataFrame in einer langen Form vorliegt, was mit Melt erreicht werden kann.
  3. Plotten Sie das Diagramm und beschriften Sie die Balken: Plotten Sie das gestapelte Balkendiagramm und wenden Sie es an bar_label wie in matplotlib.

Das obige ist der detaillierte Inhalt vonWie zentriere ich Datenbeschriftungen in einem gestapelten Matplotlib-Balkendiagramm?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn