Matplotlib avanzato

Heatmap con imshow e mappe di colore

Disegna la heatmap di una tabella 2D con ax.imshow, una mappa di colore, una barra dei colori e il valore in ogni cella.

Introduzione

Una heatmap colora ogni cella di una tabella in base al suo valore, così gli schemi per righe e colonne saltano all'occhio. ax.imshow disegna un array 2D come celle colorate, la mappa di colore (cmap) trasforma i numeri in colori e fig.colorbar mostra la scala.

visits è un array 7 × 6: una riga per giorno e una colonna per fascia oraria. imshow disegna la riga 0 in alto, e set_xticks / set_yticks danno il nome a colonne e righe. Il doppio ciclo scrive ogni valore nella sua cella con ax.text(colonna, riga, ...). Le mappe sequenziali come viridis vanno bene per valori da bassi ad alti; quelle divergenti come coolwarm per valori sopra e sotto un punto centrale.

Visualizzatore interattivo

Prova altre mappe di colore, nascondi i numeri e la barra dei colori. Una buona mappa distingue facilmente valori alti e bassi.

Esempio Matplotlib eseguibile

Matplotlib
Esegui codice →
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()
Crea un pulsante Run per questo esempio Il grafico disegnato da questo codice
Heatmap con imshow e mappe di colore