Matplotlib für Profis

Heatmaps mit imshow und Farbskalen

Eine Heatmap einer 2D-Tabelle mit ax.imshow, einer Farbskala, einer Farbleiste und einem Wert in jeder Zelle zeichnen.

Einführung

Eine Heatmap färbt jede Zelle einer Tabelle nach ihrem Wert, sodass Muster in Zeilen und Spalten sofort auffallen. ax.imshow zeichnet ein 2D-Array als farbige Zellen, die Farbskala (cmap) macht aus Zahlen Farben, und fig.colorbar zeigt die Skala.

visits ist ein 7 × 6-Array: eine Zeile pro Tag und eine Spalte pro Tageszeit. imshow zeichnet Zeile 0 oben, und set_xticks / set_yticks benennen Spalten und Zeilen. Die doppelte Schleife schreibt jeden Wert mit ax.text(Spalte, Zeile, ...) in seine Zelle. Sequenzielle Farbskalen wie viridis passen zu Werten von niedrig bis hoch; divergierende wie coolwarm zu Werten über und unter einer Mitte.

Interaktive Visualisierung

Probiere andere Farbskalen, blende die Zahlen und die Farbleiste aus. Eine gute Farbskala macht hohe und niedrige Werte leicht unterscheidbar.

Ausführbares Matplotlib-Beispiel

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

days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
hours = ["6am", "9am", "12pm", "3pm", "6pm", "9pm"]
rng = np.random.default_rng(2)
visits = rng.integers(5, 60, size=(len(days), len(hours)))

fig, ax = plt.subplots(figsize=(7, 4))
image = ax.imshow(visits, cmap="viridis")
ax.set_xticks(range(len(hours)), hours)
ax.set_yticks(range(len(days)), days)
for row in range(len(days)):
    for col in range(len(hours)):
        ax.text(col, row, visits[row, col], ha="center", va="center", color="white", fontsize=8)
fig.colorbar(image, label="Visits")
ax.set_title("Website visits by day and hour")
plt.show()
Run-Button für dieses Beispiel erstellen Das Diagramm, das dieser Code zeichnet
Heatmaps mit imshow und Farbskalen