Avec Plotly, tu crées tous les diagrammes de base avec très peu de code, et avec une interactivité étonnante :
- les informations au survol affichent des détails quand tu passes la souris sur les points de données ;
- le zoom et le panoramique permettent d’examiner le graphique de plus près ;
- tu peux masquer ou isoler des séries en cliquant sur la légende ;
- tu peux ajouter des boutons ou des contrôles personnalisés qui déclenchent des actions ou des mises à jour, et bien plus encore.
Les exemples ci-dessous supposent ces imports. Dans un notebook, termine chaque exemple par fig.show() pour afficher la figure interactive.
import plotly.express as px
import plotly.graph_objects as goPythonDiagrammes linéaires #
Plotly Express pour des tracés simples #
Prenons un jeu de données disponible dans Plotly Express pour explorer quelques diagrammes linéaires :
# Données sur les actions disponibles dans le module plotly.express
df_stocks = px.data.stocks()
df_stocks.head()Python
Ces données boursières représentent le cours par jour de plusieurs sociétés multinationales.
Diagramme linéaire pour les actions Facebook #
# Explorer l'action Facebook avec un diagramme linéaire interactif
fig = px.line(df_stocks, x='date', y='FB')
fig.show()PythonAvec cette seule ligne de code (plus l’affichage), tu génères un diagramme interactif : survole la courbe pour lire les valeurs, zoome sur une période, etc.
Plusieurs diagrammes linéaires à partir d’une simple liste #
# Plusieurs courbes en fournissant simplement une liste de noms de colonnes
fig = px.line(df_stocks, x='date', y=['GOOG', 'MSFT', 'AMZN', 'FB'],
title='Google vs. Microsoft vs. Amazon vs. Facebook')
fig.show()Python
Si tu ne veux voir que deux ou trois courbes, tu peux désactiver les autres en cliquant sur leur nom dans la légende, à droite. Pratique, non ?
Les objets graphiques pour aller plus loin #
Pour personnaliser davantage, il faut passer par les objets graphiques : c’est pourquoi on utilise graph_objects pour les diagrammes complexes et plotly.express pour les diagrammes plus simples (voir les modules importants de Plotly).
- Crée un objet figure avec
fig = go.Figure(). - Ajoute un tracé à la figure avec
fig.add_trace(), en lui passant l’objet graphique. - Utilise
go.Scatter(x, y, mode)pour créer les objets graphiques des diagrammes de dispersion et des diagrammes linéaires. - Le paramètre
modedéfinit le style du tracé : par défaut ce sont des lignes. Avecmode='lines+markers', on obtient des lignes avec des marqueurs sur les points. - Pour le style de ligne, utilise le paramètre
lineavec un dictionnaire contenant les styles voulus.
# Créer une figure à laquelle on ajoutera les tracés
fig = go.Figure()
# Ajouter les tracés avec add_trace(), en assignant des séries à x et y
fig.add_trace(go.Scatter(x=df_stocks.date, y=df_stocks.AAPL,
mode='lines', name='Apple'))
fig.add_trace(go.Scatter(x=df_stocks.date, y=df_stocks.AMZN,
mode='lines+markers', name='Amazon'))
# Personnalisation d'une ligne en particulier
fig.add_trace(go.Scatter(x=df_stocks.date, y=df_stocks.GOOG,
mode='lines+markers', name='Google',
line=dict(color='darkgreen', dash='dot')))
# Mise en forme de la figure
fig.update_layout(
title="Cours de l'action 2018 - 2020",
# titre de l'axe : xaxis_title / yaxis_title
xaxis_title='Date',
# personnaliser un axe en passant un dictionnaire
yaxis=dict(
showgrid=False,
zeroline=False,
showline=False,
showticklabels=False,
),
# style général du graphique
plot_bgcolor='white')
fig.show()Python
Diagrammes en barres #
Plotly Express pour des diagrammes en barres simples #
Charge le jeu de données tips (il est aussi disponible directement dans Plotly avec px.data.tips()) :
df_tips = px.data.tips()PythonUtilise px.bar(data, x, y) pour créer ton diagramme en barres. Tu peux ajouter une dimension avec le paramètre color : tu obtiens alors un diagramme en barres empilées. Pour des barres côte à côte, utilise barmode='group'.
# Diagramme en barres empilées
fig = px.bar(df_tips, x='sex', y='tip', color='time',
title="Pourboires en fonction de l'heure de la journée")
fig.show()Python
# Barres côte à côte
fig = px.bar(df_tips, x='sex', y='tip', color='time', barmode='group')
fig.show()Python
Ceux qui ont déjà travaillé avec Matplotlib apprécieront la facilité avec laquelle on réalise ce tracé dans Plotly !
Diagrammes en barres personnalisés #
Au lieu d’afficher directement l’objet Plotly Express, enregistre-le dans une variable fig : tu peux alors le personnaliser avec les méthodes update_traces() et update_layout().
# Pays dont la population en 2007 dépasse 50 millions d'habitants
population = px.data.gapminder()
filtered_data = population[(population.year == 2007) & (population['pop'] > 50000000)]
# Une couleur par pays
fig = px.bar(filtered_data, y='pop', x='country', text='pop', color='country')
# Valeur de la barre au-dessus de chaque barre, avec 2 chiffres significatifs
fig.update_traces(texttemplate='%{text:.2s}', textposition='outside')
# Incliner les étiquettes de 45 degrés
fig.update_layout(xaxis_tickangle=-45)
fig.show()Python
Sans le paramètre color='country', toutes les barres auraient la même couleur. Le paramètre text permet d’afficher la population au sommet des barres.
Diagrammes de dispersion #
Utilise px.scatter(data, x, y) pour créer des diagrammes de dispersion simples. Tu peux ajouter des dimensions avec les paramètres color et size. Avec les objets graphiques, utilise go.Scatter(x, y, mode='markers') ; tu peux même ajouter une variable numérique comme dimension avec marker_color.
# Jeu de données Iris inclus dans Plotly
df_iris = px.data.iris()
# Diagramme de dispersion personnalisé
fig = go.Figure()
fig.add_trace(go.Scatter(
x=df_iris.sepal_width, y=df_iris.sepal_length,
mode='markers',
marker_color=df_iris.sepal_width,
text=df_iris.species,
marker_showscale=True
))
fig.update_traces(marker_line_width=2, marker_size=10)
fig.show()Python
La couleur des points dépend ici de la largeur du sépale.
Diagrammes circulaires #
Utilise px.pie(data, values=..., names=...) pour créer un diagramme circulaire. Pour personnaliser davantage, utilise l’objet graphique go.Pie() et la méthode update_traces() pour régler l’info-bulle, le texte et le décalage (pull) des parts, l’équivalent du paramètre explode de Matplotlib.
counts = population.continent.value_counts()
# Diagramme circulaire personnalisé
fig = go.Figure(go.Pie(labels=counts.index, values=counts.values))
# Info-bulle, texte, décalage de chaque part et contour
fig.update_traces(hoverinfo='label+percent', textfont_size=15,
textinfo='label+percent', pull=[0.05, 0, 0, 0, 0],
marker_line=dict(color='#FFFFFF', width=2))
fig.show()Python
Le paramètre pull met en évidence la première part en la décalant légèrement du centre. Il prend une valeur par part : ici, 5 continents.
Histogrammes #
Utilise px.histogram(data, x) pour créer un histogramme ; le paramètre color empile plusieurs histogrammes. Le paramètre marginal ajoute au-dessus une autre représentation de la distribution : boîte à moustaches ('box'), violon ('violin') ou rug ('rug').
Voici un violon ajouté au-dessus d’un histogramme empilé :
# Histogrammes empilés selon le genre, avec un violon en marge
fig = px.histogram(df_tips, x="total_bill", color="sex", marginal='violin')
fig.update_layout(bargap=0.2)
fig.show()Python
Dans le notebook, tu peux :
- survoler les barres pour obtenir plus de détails ;
- passer la souris sur le violon pour lire les quartiles ;
- cliquer sur la légende pour activer ou désactiver une série.
Teste-le toi-même dans un notebook Jupyter : c’est bien plus parlant qu’une image. La suite : diagrammes avancés avec Plotly.
Pour comparer les bibliothèques de visualisation, consulte aussi notre article sur les 4 alternatives puissantes pour la visualisation de données.

