Rendez vos graphiques interactifs avec Plotly

Dans le chapitre précédent, vous avez produit vos deux premiers graphiques Seaborn, statiques et soignés. Mais le médecin-chef ne va pas se contenter de regarder une image fixe : il aimerait pouvoir survoler un point pour voir le détail d'un patient ou isoler un groupe en un clic. C'est exactement ce que Plotly va vous permettre de faire.

Construisez vos graphiques essentiels avec Plotly

Bonne nouvelle : vous n'avez pas grand-chose à réapprendre. Plotly Express partage la même logique de données que Seaborn, le format tidy data, et une syntaxe étonnamment proche. Là où vous écriviezsns.scatterplot(...), vous écrirezpx.scatter(...). Le changement de préfixe cache un changement de nature : on change de librairie Python pour passer sur une librairie avec des graphiques interactifs. Une fois cette logique posée, trois graphiques Plotly Express couvrent l'essentiel de vos besoins pour ce chapitre :

  1. px.bar, pour répondre à Q3 : comment se répartissent les types de douleur thoracique ? Avec un paramètrecolor, vous obtenez un graphique en barres groupées, où chaque type de douleur est ventilé selon le diagnostic.

import plotly.express as px

fig = px.bar(df, x="ChestPainType", color="HeartDisease", barmode="group",
             title="Répartition des types de douleur thoracique selon le diagnostic")
fig.show()
  1. px.imshow, pour répondre à Q4 : quelle est la composition des résultats d'ECG au repos ? Combiné à un tableau croisé (pd.crosstab), il produit une heatmap interactive, où chaque case affiche sa valeur au survol.

table = pd.crosstab(df["RestingECG"], df["HeartDisease"])
fig = px.imshow(table, text_auto=True, title="Composition des résultats d'ECG")
fig.show()
  1. px.scatteretpx.box, en démonstration rapide, pour montrer que la même logique s'applique à tous les autres types de graphiques que vous avez vus en Seaborn : un nuage de points devientpx.scatter(df, x=..., y=..., color=...), une boîte à moustaches devientpx.box(df, x=..., y=...).

Pour chaque graphique, pensez à soigner les annotations : untitleexplicite, deslabelspersonnalisés pour remplacer les noms de colonnes techniques par des libellés clairs, et une palette de couleurs cohérente avec ce que vous avez appris en P1C3.

Évaluez la valeur ajoutée de l'interactivité

Produire un graphique interactif est devenu simple. Tellement simple qu’on serait tenté d'en mettre partout. Mais un bon data analyst ne se demande pas « est-ce que je peux ajouter de l'interactivité ? », il se demande « est-ce que ça sert vraiment mon lecteur ? ».

Voici un petit test à 5 questions à vous poser pour chacun de vos deux graphiques Seaborn (Q1 et Q2). Notez vos réponses dans une cellule Markdown de votre notebook. C'est votre raisonnement qui compte ici, pas la réponse elle-même :

  • Le hover changerait-il quelque chose ? Y a-t-il une valeur exacte que mon lecteur voudrait connaître, mais que le graphique statique ne montre pas ?

  • Mon audience a-t-elle envie de fouiller ? A-t-elle besoin d'isoler un groupe, de le faire disparaître, de comparer en direct ?

  • Écran ou papier ? Ce graphique finira-t-il dans un PDF imprimé, ou consulté en ligne ?

  • Exploration ou résultat ? Suis-je encore en train de chercher, ou est-ce que je présente une conclusion ?

  • Trop de points pour l'œil ? Le nuage est-il si dense qu'un zoom deviendrait nécessaire pour y voir quelque chose ?

À vous de jouer !

Contexte

Le médecin-chef souhaite désormais un tableau de bord qu'il pourra explorer lui-même, sans dépendre de vous pour chaque question. Vous allez continuer dans le même notebook, avec le même fichierheart.csv.

Vous aurez besoin de Pandas et de Plotly. Dans Google Colab, Plotly est généralement déjà disponible. Si une erreur indique que la bibliothèque est manquante, installez-la dans une cellule du notebook avec :

!pip install plotly pandas

À partir du fichierheart.csv, produisez avec Plotly Express les graphiques répondant aux questions Q3 et Q4. Puis convertissez le graphique Q1, déjà produit en Seaborn au chapitre précédent, en version interactive Plotly, et notez dans une cellule Markdown si cette conversion apporte une réelle valeur ajoutée dans ce cas précis. Voici la structure de départ :

import pandas as pd
import plotly.express as px

df = pd.read_csv("heart.csv")

# Q3 : répartition des types de douleur thoracique selon le diagnostic
fig = px.bar(df, x=..., color=..., barmode=...)
fig.show()

# Q4 : composition des résultats d'ECG au repos
table = pd.crosstab(df[...], df[...])
fig = px.imshow(table, text_auto=...)
fig.show()

# Conversion de Q1 (kdeplot Seaborn -> version Plotly)
fig = px.histogram(df, x=..., color=..., ...)
fig.show()

En résumé

  • Plotly Express partage la même logique de données que Seaborn (format tidy) : on remplacesns.parpx.et on gagne l'interactivité.

  • L'interactivité apporte de la valeur quand l'audience a besoin d'explorer : hover pour les valeurs exactes, filtre de légende pour isoler un groupe, zoom pour une zone dense.

  • Un graphique interactif n'est pas toujours meilleur qu'un graphique statique, cela dépend du contexte de diffusion (écran vs impression, exploration vs communication).

  • Altair propose une autre approche, une grammaire des graphiques déclarative, à explorer si vous produisez beaucoup de graphiques partageant une structure similaire.

  • Le choix de librairie est une décision éditoriale, pas technique : Seaborn pour explorer et documenter, Plotly pour partager et faire interagir.

Vous avez maintenant deux façons de produire un graphique, statique ou interactif. Dans le dernier chapitre de cette partie, vous allez assembler l'ensemble de votre travail dans un livrable final cohérent et partageable.

Et si vous obteniez un diplôme OpenClassrooms ?
  • Formations jusqu’à 100 % financées
  • Date de début flexible
  • Projets professionnalisants
  • Mentorat individuel
Trouvez la formation et le financement faits pour vous