Matplotlib-Funktion bar() / barh()
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
| Parameter | Type | Beschreibung |
|---|---|---|
| x / y | array-ähnlich | Die Positionskoordinaten der Balken (x für vertikal, y für horizontal) |
| height / width | array-ähnlich | Die Höhe (vertikal) oder Breite (horizontal) der Balken, d. h. die Datenwerte |
| width(bar)/ height(barh) | float oder array-ähnlich | Die Breite/Höhe der Balken, Standard 0.8 |
| bottom / left | float oder array-ähnlich | Die Startposition der Unterkante der Balken, Standard 0. Kann verwendet werden, um gestapelte Balkendiagramme zu zeichnen. |
| align | str | Ausrichtung der Balken relativ zu den x/y-Koordinaten: 'center' (Standard) oder 'edge' |
| color | color oder Liste | Balkenfarbe, kann eine einzelne Farbe oder eine Liste von Farben sein |
| edgecolor | color | Rahmenfarbe der Balken |
| linewidth / lw | float | Breite des Balkenrands |
| tick_label | array-ähnlich | Tick-Beschriftungen für die Balken, die eins zu eins den x-Positionen entsprechen |
| label | str | Legendenbeschriftung (verwendet für gruppierte Balkendiagramme) |
| Alpha | float | Transparenz |
| hatch | str | Fü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 ein
BarContainerObjekt 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
# 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 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
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
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'。
Andere Erweiterungen