HOWTO · Plotly
Graphique en ligne Plotly
Cet article vous apprend à créer un graphique linéaire en utilisant la fonction line() de Plotly en Python.
Sur cette page
Un graphique en courbes relie des points de données par une ligne continue, ce qui permet de montrer facilement comment une valeur évolue le long d’un axe ordonné, comme le temps. En Python, le moyen le plus rapide d’en créer un est px.line, la fonction de graphique en courbes de Plotly Express : passez les données des axes x et y, et elle renvoie un objet Figure que fig.show() affiche dans votre navigateur ou votre notebook.
Créer un graphique en courbes avec Plotly Express
Plotly Express est l’interface de tracé de haut niveau de Plotly. px.line prend vos données, construit une Figure et stocke une trace — une courbe — pour chaque série que vous lui fournissez.
Exécutez cet exemple :
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
import pandas as pd
import plotly.express as px
df = pd.DataFrame(
{
"day": ["Mon", "Tue", "Wed", "Thu"],
"team_a": [3, 4, 3, 5],
"team_b": [2, 3, 2, 4],
}
)
fig = px.line(df, x="day", y=["team_a", "team_b"], width=500, height=400)
print(len(fig.data))
2
Les arguments width et height définissent la taille du graphique en pixels, et passer une liste de deux colonnes à y dessine deux courbes ; le nombre de traces affiché est donc 2. Les noms de colonnes deviennent les entrées de la légende.
Ajoutez fig.show() comme dernière ligne pour ouvrir le graphique rendu dans votre navigateur (dans un notebook Jupyter, l’évaluation de fig l’affiche automatiquement). Voici le résultat :
Choisir les données pour les axes x et y
px.line accepte les données sous deux formes. Vous pouvez passer directement de simples séquences Python à x et y, ou passer un DataFrame comme premier argument et indiquer à x et y les noms des colonnes à tracer. x positionne les points le long de l’axe horizontal et y le long de l’axe vertical, et Plotly relie les points dans l’ordre où les valeurs apparaissent.
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
import pandas as pd
import plotly.express as px
sequence_fig = px.line(x=[1, 2, 3, 4], y=[10, 15, 13, 18])
df = pd.DataFrame(
{"month": ["Jan", "Feb", "Mar", "Apr"], "revenue": [10, 15, 13, 18]}
)
column_fig = px.line(df, x="month", y="revenue")
print(len(sequence_fig.data), len(column_fig.data))
1 1
Les deux formes produisent une figure contenant une seule courbe. Pour tracer plusieurs séries, passez une liste de noms de colonnes à y pour des données en format large, comme dans le premier exemple, ou conservez les données en format long — une ligne de données par observation avec une colonne identifiant la série — et passez cette colonne à color. Utilisez l’argument labels, un dictionnaire qui associe les noms de colonnes au texte à afficher, lorsque vous voulez des titres d’axe ou des noms de légende différents des noms de colonnes.
Personnaliser les courbes, les couleurs et les marqueurs
Avec des données en format long, color dessine une courbe par groupe et ajoute une légende, line_dash fait varier le style de tirets de chaque courbe, et symbol fait varier le symbole du marqueur à chaque point de données (les marqueurs apparaissent automatiquement dès que symbol est défini ; sinon, markers=True les active). L’argument text définit une étiquette de texte pour chaque point, que vous pouvez afficher avec fig.update_traces(mode="lines+markers+text"), et title donne un titre au graphique.
Plotly choisit les couleurs et les styles de tirets dans des séquences par défaut. Remplacez-les avec color_discrete_sequence — une palette nommée telle que px.colors.qualitative.Light24 ou Dark24, ou votre propre liste — et line_dash_sequence, qui parcourt des styles de tirets valides tels que solid, dot, dash, longdash, dashdot et longdashdot.
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
import plotly.express as px
df = px.data.gapminder().query("continent == 'Oceania'")
fig = px.line(
df,
x="year",
y="lifeExp",
color="country",
line_dash="country",
color_discrete_sequence=px.colors.qualitative.Light24,
line_dash_sequence=["longdashdot", "dash"],
width=600,
height=400,
)
print(len(fig.data), fig.data[0].line.dash)
2 longdashdot
px.data.gapminder() charge un jeu de données fourni avec Plotly, et l’appel query conserve les deux pays d’Océanie afin que le graphique comporte deux courbes. La première série utilise la première entrée de line_dash_sequence.
Pour contrôler précisément chaque courbe, utilisez color_discrete_map, un dictionnaire qui associe les noms de groupes à des couleurs CSS. Les groupes absents de cette correspondance conservent des couleurs issues de la séquence active.
import plotly.express as px
df = px.data.gapminder().query("continent == 'Oceania'")
fig = px.line(
df,
x="year",
y="lifeExp",
color="country",
color_discrete_map={"Australia": "black", "New Zealand": "yellow"},
width=600,
height=400,
)
print(fig.data[0].name, fig.data[0].line.color)
Australia black
Diviser un graphique en facettes et modifier les échelles des axes
facet_col et facet_row divisent le graphique en une grille de sous-graphiques, un par valeur de la colonne choisie, afin de comparer les séries côte à côte. facet_col_spacing et facet_row_spacing acceptent un nombre à virgule flottante entre 0 et 1 qui définit l’espacement entre les sous-graphiques sous forme de fraction de la zone de tracé.
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
import plotly.express as px
df = px.data.gapminder().query("continent == 'Oceania'")
fig = px.line(
df,
x="year",
y="lifeExp",
color="country",
line_dash="country",
symbol="country",
facet_col="country",
title="Line Chart",
width=600,
height=400,
)
print(len(fig.data))
2
Lorsque les valeurs s’étendent sur plusieurs ordres de grandeur, faites passer un axe à l’échelle logarithmique avec log_x=True ou log_y=True ; Plotly libelle alors les graduations en puissances de dix.
import plotly.express as px
df = px.data.gapminder().query("continent == 'Oceania'")
fig = px.line(df, x="year", y="lifeExp", color="country", log_y=True)
print(fig.layout.yaxis.type)
log
Mettre à jour les traces et ajouter des barres d’erreur
Pour dessiner des barres d’erreur, donnez à error_y (ou à error_x pour l’incertitude horizontale) une colonne ou une séquence contenant l’ampleur de l’incertitude de chaque point :
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
import pandas as pd
import plotly.express as px
df = pd.DataFrame(
{
"month": ["Jan", "Feb", "Mar", "Apr", "May", "Jun"],
"revenue": [102, 118, 110, 131, 125, 140],
"uncertainty": [6, 8, 5, 9, 7, 10],
}
)
fig = px.line(df, x="month", y="revenue", error_y="uncertainty", markers=True)
print(len(fig.data[0].error_y.array))
6
Une fois la figure créée, fig.update_traces applique des attributs de trace à toutes les courbes à la fois. Par exemple, showlegend=False retire toutes les courbes de la légende, et opacity, avec une valeur entre 0 et 1, rend les courbes translucides — ce qui est utile lorsque plusieurs séries se chevauchent.
import plotly.express as px
df = px.data.gapminder().query("continent == 'Oceania'")
fig = px.line(df, x="year", y="lifeExp", color="country", width=600, height=400)
fig.update_traces(showlegend=False, opacity=0.7)
print(fig.data[0].showlegend, fig.data[0].opacity)
False 0.7
px.line construit des traces Scatter, donc chaque option de la référence Plotly sur les traces Scatter fonctionne aussi avec fig.update_traces.