Matplotlib für Profis

Projekt: ein Verkaufs-Dashboard

Linien-, Balken- und Histogrammdiagramme, Annotationen und einen Stil zu einem 2 × 2-Verkaufs-Dashboard kombinieren.

Einführung

Dieses Projekt fasst den Kurs zusammen: vier Diagramme in einer Figur, jedes beantwortet eine Frage zu denselben Verkaufsdaten. Ein gemeinsamer Stil und klare Titel machen das Dashboard auf einen Blick lesbar.

plt.style.use setzt Farben und Schriften für die ganze Figur. Jedes Feld beantwortet eine Frage: Wie wächst der Umsatz (Linie mit annotiertem besten Monat), wie viele Bestellungen gab es (Balken), was verkauft sich (sortierte waagerechte Balken) und wie groß sind Bestellungen meist (Histogramm). color="C1" nimmt die zweite Farbe des Stils, damit jedes Feld eine eigene hat, und margins lässt Platz für die Beschriftung. suptitle betitelt die ganze Figur, und tight_layout verhindert Überlappungen. Probiere einen anderen Stil, etwa "fivethirtyeight" oder "bmh".

Interaktive Visualisierung

Wechsle den Stil, um das ganze Dashboard auf einmal umzugestalten, und wähle ein Feld, um den Code dazu zu sehen.

Ausführbares Matplotlib-Beispiel

Matplotlib
Code ausführen →
main.py
import matplotlib.pyplot as plt
import numpy as np

plt.style.use("ggplot")
months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun"]
revenue = np.array([42, 48, 45, 58, 63, 70])
orders = np.array([310, 340, 330, 400, 420, 465])
products = {"Other": 14, "Tablets": 17, "Phones": 31, "Laptops": 38}
order_values = np.random.default_rng(8).gamma(4, 30, 465)

fig, axes = plt.subplots(2, 2, figsize=(10, 7))
fig.suptitle("Sales dashboard, first half of the year", fontsize=14)

axes[0, 0].plot(months, revenue, marker="o")
best = revenue.argmax()
axes[0, 0].annotate(f"{revenue[best]}k", (best, revenue[best]), xytext=(0, 8), textcoords="offset points", ha="center")
axes[0, 0].margins(y=0.2)
axes[0, 0].set_title("Revenue (k$)")

axes[0, 1].bar(months, orders, color="C1")
axes[0, 1].set_title("Orders")

axes[1, 0].barh(list(products), list(products.values()), color="C2")
axes[1, 0].set_title("Share of sales (%)")

axes[1, 1].hist(order_values, bins=20, color="C4", edgecolor="white")
axes[1, 1].set_title("Order value ($)")

fig.tight_layout()
plt.show()
Run-Button für dieses Beispiel erstellen Das Diagramm, das dieser Code zeichnet
Projekt: ein Verkaufs-Dashboard