Matplotlib avancé

Cartes de chaleur avec imshow et palettes

Dessinez une carte de chaleur d'un tableau 2D avec ax.imshow, une palette, une barre de couleur et une valeur par case.

Introduction

Une carte de chaleur colore chaque case d'un tableau selon sa valeur, ce qui fait ressortir les tendances par ligne et par colonne. ax.imshow dessine un tableau 2D en cases colorées, la palette (cmap) transforme les nombres en couleurs et fig.colorbar affiche l'échelle.

visits est un tableau 7 × 6 : une ligne par jour et une colonne par moment de la journée. imshow dessine la ligne 0 en haut, et set_xticks / set_yticks nomment colonnes et lignes. La double boucle écrit chaque valeur dans sa case avec ax.text(colonne, ligne, ...). Les palettes séquentielles comme viridis conviennent aux valeurs de bas en haut ; les divergentes comme coolwarm, aux valeurs au-dessus et en dessous d'un milieu.

Visualiseur interactif

Essayez d'autres palettes, masquez les nombres et la barre de couleur. Une bonne palette distingue facilement les valeurs hautes et basses.

Exemple Matplotlib exécutable

Matplotlib
Exécuter le code →
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()
Obtenir un bouton Run pour cet exemple Le graphique tracé par ce code
Cartes de chaleur avec imshow et palettes