Matplotlib avancé

Projet : un tableau de bord des ventes

Combinez courbe, barres, histogramme, annotations et style dans un tableau de bord des ventes 2 × 2.

Introduction

Ce projet rassemble tout le cours : quatre graphiques dans une figure, chacun répondant à une question sur les mêmes données de ventes. Un style commun et des titres clairs rendent le tableau de bord lisible d'un coup d'œil.

plt.style.use fixe les couleurs et les polices de toute la figure. Chaque panneau répond à une question : comment évolue le chiffre d'affaires (une courbe avec le meilleur mois annoté), combien de commandes (barres), ce qui se vend (barres horizontales triées) et le montant habituel d'une commande (un histogramme). color="C1" prend la deuxième couleur du style pour que chaque panneau ait la sienne, et margins laisse de la place à l'étiquette. suptitle titre la figure entière et tight_layout évite les chevauchements. Essayez un autre style, comme "fivethirtyeight" ou "bmh".

Visualiseur interactif

Changez le style pour transformer tout le tableau de bord d'un coup, et choisissez un panneau pour voir le code qui le dessine.

Exemple Matplotlib exécutable

Matplotlib
Exécuter le code →
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()
Obtenir un bouton Run pour cet exemple Le graphique tracé par ce code
Projet : un tableau de bord des ventes