Matplotlib-Funktion bar() / barh()


Matplotlib 参考文档Matplotlib-Referenzdokumentation

bar()Wird zum Zeichnen vertikaler Balkendiagramme verwendet,barh()Wird zum Zeichnen horizontaler Balkendiagramme verwendet.

Balkendiagramme werden verwendet, um den quantitativen Vergleich kategorischer Daten darzustellen, wobei jede Kategorie durch einen Balken repräsentiert wird, dessen Länge ihren Wert angibt.

Funktionsdefinition

bar() - Vertikales Balkendiagramm

matplotlib.pyplot.bar(x, height, width=0.8, bottom=0, *, align='center',
    **kwargs)

barh() - Horizontales Balkendiagramm

matplotlib.pyplot.barh(y, width, height=0.8, left=0, *, align='center',
    **kwargs)

Axes-Schnittstelle

Axes.bar(x, height, width=0.8, bottom=0, *, align='center', **kwargs)
Axes.barh(y, width, height=0.8, left=0, *, align='center', **kwargs)

Parameterbeschreibung

ParameterTypeBeschreibung
x / yarray-ähnlichDie Positionskoordinaten der Balken (x für vertikal, y für horizontal)
height / widtharray-ähnlichDie Höhe (vertikal) oder Breite (horizontal) der Balken, d. h. die Datenwerte
width(bar)/ height(barh)float oder array-ähnlichDie Breite/Höhe der Balken, Standard 0.8
bottom / leftfloat oder array-ähnlichDie Startposition der Unterkante der Balken, Standard 0. Kann verwendet werden, um gestapelte Balkendiagramme zu zeichnen.
alignstrAusrichtung der Balken relativ zu den x/y-Koordinaten: 'center' (Standard) oder 'edge'
colorcolor oder ListeBalkenfarbe, kann eine einzelne Farbe oder eine Liste von Farben sein
edgecolorcolorRahmenfarbe der Balken
linewidth / lwfloatBreite des Balkenrands
tick_labelarray-ähnlichTick-Beschriftungen für die Balken, die eins zu eins den x-Positionen entsprechen
labelstrLegendenbeschriftung (verwendet für gruppierte Balkendiagramme)
AlphafloatTransparenz
hatchstrFüllmuster: '/', '\\', '|', '-', '+', 'x', 'o', '*'

bar_label() Zusätzliche Hinweise

bar_label()Wird verwendet, um Wertbeschriftungen direkt auf den Balken anzuzeigen.

Axes.bar_label(container, labels=None, *, fmt=None, label_type='edge',
    padding=0, **kwargs)

Sowohl bar() als auch barh() geben einBarContainerObjekt zurück, das an bar_label() übergeben werden kann, um Wertbeschriftungen hinzuzufügen. Dies ist der empfohlene Ansatz in Matplotlib 3.4+.


Anwendungsbeispiele

Beispiel 1: Einfaches vertikales Balkendiagramm

Beispiel

import matplotlib.pyplot as plt

# Kategoriebeschriftungen und Daten
categories = ['Python', 'Java', 'JavaScript', 'C++', 'Go']
values = [85, 72, 68, 55, 42]

fig, ax = plt.subplots(layout='constrained')

# Balkendiagramm zeichnen
bars = ax.bar(categories, values,
              color=['#3498db', '#e74c3c', '#f39c12', '#2E7DCC', '#9b59b6'],
              edgecolor='white', linewidth=1)

# Werte auf den Balken anzeigen
ax.bar_label(bars, fmt='%d', padding=3)

ax.set_title('Popularität von Programmiersprachen')
ax.set_ylabel('Punktzahl')
ax.set_ylim(0, 100)
ax.grid(axis='y', alpha=0.3)
plt.show()

Beispiel 2: Gruppiertes Balkendiagramm

Beispiel

import matplotlib.pyplot as plt
import numpy as np

# Gruppierte Daten
labels = ['Q1', 'Q2', 'Q3', 'Q4']
product_a = [120, 135, 148, 162]
product_b = [90, 105, 115, 130]

x = np.arange(len(labels))   # x-Positionen: [0, 1, 2, 3]
width = 0.35                  # Breite jedes Balkens

fig, ax = plt.subplots(layout='constrained')

# Erste Gruppe von Balken (Versatz -width/2)
bars1 = ax.bar(x - width/2, product_a, width,
               label='Produkt A', color='steelblue', edgecolor='white')
# Zweite Gruppe von Balken (Versatz +width/2)
bars2 = ax.bar(x + width/2, product_b, width,
               label='Produkt B', color='coral', edgecolor='white')

# Wertbeschriftungen hinzufügen
ax.bar_label(bars1, padding=3, fmt='%d')
ax.bar_label(bars2, padding=3, fmt='%d')

ax.set_title('Vergleich der Quartalsverkäufe')
ax.set_ylabel('Verkäufe (Einheiten)')
ax.set_xticks(x)
ax.set_xticklabels(labels)
ax.legend()
ax.grid(axis='y', alpha=0.3)
plt.show()

Beispiel 3: Gestapeltes Balkendiagramm

Beispiel

import matplotlib.pyplot as plt

categories = ['Jan', 'Feb', 'Mär', 'Apr', 'Mai']
income = [5000, 5200, 4800, 5500, 6000]
expense = [3000, 3500, 3200, 4000, 4200]

fig, ax = plt.subplots(layout='constrained')

# Erste Schicht der Balken (unten)
bars_income = ax.bar(categories, income,
                     label='Einkommen', color='#2E7DCC', edgecolor='white')
# Zweite Balkenschicht (auf der ersten Schicht gestapelt)
bars_expense = ax.bar(categories, expense, bottom=income,
                      label='Ausgabe', color='#e74c3c', edgecolor='white')

# Beschriftungen hinzufügen
ax.bar_label(bars_income, label_type='center', fmt='$%d')
ax.bar_label(bars_expense, label_type='center', fmt='$%d')

ax.set_title('Gestapeltes Balkendiagramm: Monatliche Finanzen')
ax.set_ylabel('Betrag ($)')
ax.legend()
ax.grid(axis='y', alpha=0.3)
plt.show()

Beispiel 4: Horizontales Balkendiagramm (barh)

Beispiel

import matplotlib.pyplot as plt

tasks = ['Aufgabe A', 'Aufgabe B', 'Aufgabe C', 'Aufgabe D', 'Aufgabe E']
hours = [12.5, 8.0, 15.3, 6.2, 10.8]

fig, ax = plt.subplots(figsize=(8, 4), layout='constrained')

# Horizontales Balkendiagramm
bars = ax.barh(tasks, hours,
               color='#3498db', edgecolor='white', height=0.6)

# Beschriftungen am Ende der Balken hinzufügen
ax.bar_label(bars, fmt='%.1f h', padding=5)

ax.set_title('Aufgabenabschlusszeit (horizontales Balkendiagramm)')
ax.set_xlabel('Stunden')
ax.invert_yaxis()  # y-Achse umkehren, sodass die erste Kategorie oben steht
ax.grid(axis='x', alpha=0.3)
plt.show()

FAQ

Wie ist die Achsenzuordnung für bar() und barh()?

bar(x, height): x ist die Position, height bestimmt die Balkenhöhe (vertikale Richtung).

barh(y, width): y ist die Position, width bestimmt die Balkenbreite (horizontale Richtung).

Beachten Sie die unterschiedlichen Parameternamen: bar verwendet height, barh verwendet width, um die Datenwerte darzustellen.

Wie ordnet man die Balken in einem gruppierten Balkendiagramm nebeneinander an?

wirdwidthSetzen Sie ihn auf den Kehrwert der Gesamtbreite jeder Balkengruppe und verwenden Siealign='edge'。


Matplotlib 参考文档Matplotlib-Referenzdokumentation

Andere Erweiterungen