Intermédiaire

Les types de graphiques essentiels en BI

Plotly Express propose une interface unifiée pour tous les types de graphiques : on passe un DataFrame, on spécifie les colonnes, et le rendu interactif est automatique.

Le principe commun à tous les graphiques

La signature suit le même patron quelle que soit la fonction :

python
fig = px.type_de_graphique(
    data_frame=df,
    x="colonne_x",
    y="colonne_y",
    color="colonne",
    title="Titre",
    labels={"chiffre_affaires": "CA (€)", "region": "Région"}
)

Les paramètres récurrents :

  • data_frame — le DataFrame pandas source (souvent passé en premier argument positionnel)
  • x, y — les colonnes à mapper sur les axes
  • color — une colonne pour colorer les éléments (catégories ou valeurs continues)
  • title — le titre du graphique
  • labels — un dictionnaire pour renommer les axes et les légendes

Paramètre labels

labels remplace les noms de colonnes techniques par des libellés lisibles. Par exemple, labels={"chiffre_affaires": "CA (€)"} affichera « CA (€) » sur l'axe Y au lieu de « chiffre_affaires ». À utiliser dès qu'un graphique est destiné à un utilisateur métier.

Bar chart — comparaison entre catégories

Le bar chart est le graphique le plus courant en BI. Il sert à comparer des valeurs entre catégories discrètes.

Bar chart vertical (par défaut)

python
import plotly.express as px

fig = px.bar(
    df_regions,
    x="region",
    y="chiffre_affaires",
    title="CA par région",
    labels={"chiffre_affaires": "CA (€)", "region": "Région"},
    color="chiffre_affaires",
    color_continuous_scale="Blues"
)
st.plotly_chart(fig, use_container_width=True)

Le paramètre color_continuous_scale="Blues" applique un dégradé de couleur proportionnel à la valeur, ce qui renforce visuellement la hiérarchie entre les barres.

Bar chart horizontal

Quand les labels sur l'axe X sont longs (noms de produits, régions détaillées), le bar chart horizontal est plus lisible :

python
fig = px.bar(
    df_regions,
    x="chiffre_affaires",
    y="region",
    orientation="h",
    title="CA par région"
)

Quand utiliser orientation='h'

La règle est simple : si les labels sont longs ou nombreux, passez en horizontal. Les labels s'affichent alors sur l'axe Y, avec tout l'espace nécessaire. C'est un réflexe courant pour les classements (top 10, top N).

Bar chart groupé

Pour comparer deux métriques côte à côte, il faut d'abord restructurer le DataFrame avec melt(), puis utiliser barmode="group" :

python
df_melted = df_regions.melt(
    id_vars="region",
    value_vars=["chiffre_affaires", "nombre_ventes"],
    var_name="métrique",
    value_name="valeur"
)
fig = px.bar(df_melted, x="region", y="valeur", color="métrique", barmode="group")

Quel paramètre de px.bar() permet d'afficher un bar chart horizontal ?

Line chart — évolution temporelle

Le line chart visualise une évolution dans le temps. Il met en évidence les tendances, les saisonnalités et les anomalies.

Série unique

python
fig = px.line(
    df_evolution,
    x="mois",
    y="chiffre_affaires",
    title="Évolution mensuelle du CA",
    labels={"mois": "Mois", "chiffre_affaires": "CA (€)"},
    markers=True
)
st.plotly_chart(fig, use_container_width=True)

markers=True ajoute un point visible à chaque donnée. Recommandé quand il y a peu de points (12 mois, par exemple) pour distinguer les données réelles des interpolations.

Plusieurs séries

Pour comparer plusieurs catégories, ajoutez le paramètre color :

python
fig = px.line(
    df_evolution_par_region,
    x="mois",
    y="chiffre_affaires",
    color="region",
    title="Évolution CA par région",
    markers=True
)

Plotly crée automatiquement une légende cliquable : chaque série peut être masquée ou affichée d'un clic.

À quoi sert le paramètre markers=True dans px.line() ?

Pie chart et donut — répartition

Le pie chart visualise la répartition d'un total en parts. Graphique controversé (difficile de comparer des parts similaires), mais très demandé en BI.

Pie chart classique

python
fig = px.pie(
    df_regions,
    names="region",
    values="chiffre_affaires",
    title="Répartition du CA par région"
)

Notez la différence de paramètres par rapport aux autres graphiques : names (pas x) et values (pas y).

Donut chart

Le donut est un pie chart avec un trou central. Le paramètre hole contrôle la taille du trou (entre 0 et 1) :

python
fig = px.pie(
    df_regions,
    names="region",
    values="chiffre_affaires",
    hole=0.4,
    title="Répartition du CA par région"
)

Pie ou Donut ?

Le donut (hole=0.4) est généralement préféré au pie chart classique. Le trou central peut accueillir un label ou une valeur totale, et il est visuellement plus léger. Valeur de hole recommandée : entre 0.3 et 0.5.

Scatter plot — corrélation

Le scatter plot positionne chaque point selon deux variables continues, pour détecter des corrélations, des clusters ou des outliers.

python
fig = px.scatter(
    df_produits,
    x="prix_unitaire",
    y="volume_ventes",
    size="chiffre_affaires",
    color="categorie",
    hover_name="produit",
    title="Prix vs Volume de ventes"
)

Paramètres spécifiques au scatter :

  • size — une colonne numérique qui contrôle la taille des points (bubble chart)
  • hover_name — la colonne affichée en gras au survol (nom du produit, par exemple)

Quel paramètre de px.pie() crée un donut chart ?

Tableau récapitulatif

TypeFonction pxCas d'usage BI typique
Bar verticalpx.barCA par région, ventes par catégorie
Bar horizontalpx.bar(..., orientation="h")Classement de produits, top N
Line chartpx.lineÉvolution mensuelle, tendances
Pie / Donutpx.pieRépartition, parts de marché
Scatterpx.scatterCorrélations, détection d'outliers
Area chartpx.areaÉvolution avec volumes cumulés
Box plotpx.boxDistribution, médiane, écarts
Heatmappx.imshowMatrice de corrélation, calendrier

À retenir

Points clés

  • Tous les graphiques Plotly Express suivent la même signature : px.type(df, x=..., y=..., color=..., title=...)
  • Bar chart : px.bar — vertical par défaut, orientation="h" pour horizontal, barmode="group" pour groupé
  • Line chart : px.linemarkers=True pour les points, color pour plusieurs séries
  • Pie / Donut : px.pienames et values (pas x/y), hole=0.4 pour un donut
  • Scatter : px.scattersize pour le bubble chart, hover_name pour le survol
  • Le paramètre labels rend les axes lisibles pour les utilisateurs métier