Nous pouvons créer tous les diagrammes de base avec peu de code et une interactivité étonnante :
- Les informations au survol affichent des détails lorsque tu passes la souris sur les points de données.
- le zoom et le panoramique permettent un examen plus approfondi du graphique.
- Tu peux sélectionner des séries ou des points de données spécifiques en cliquant sur eux dans la légende ou sur le graphique lui-même.
- Tu peux ajouter des boutons ou des contrôles personnalisés au tracé qui déclenchent des actions ou des mises à jour spécifiques lorsque tu cliques dessus, et bien plus encore.
Diagrammes linéaires #
- Utilisation de Plotly Express pour des tracés simples
Prenons un jeu de données disponible dans Plotly pour explorer quelques diagrammes linéaires.
# Données sur les stocks disponibles dans le module plotly express df_stocks = px.data.stocks() df_stocks.head()
- Diagramme linéaire pour les actions Facebook
# Explorer les actions de Facebook à l'aide d'un diagramme linéaire interactif px.line(df_stocks, x='date', y='FB')
En exécutant la seule ligne de code ci-dessus, tu seras en mesure de générer un magnifique diagramme interactif comme celui-ci.
- Génération de plusieurs diagrammes linéaires à partir d’une simple liste
# Générer plusieurs diagrammes linéaires en fournissant simplement une liste de noms de séries px.line(df_stocks, x='date', y=['GOOG','MSFT','AMZN','FB'], title='Google Vs. Microsoft vs. Amazon vs. Facebook')
Maintenant, si tu ne veux en voir que deux ou trois, tu peux désactiver les autres en cliquant sur le nom de l’étiquette sur le côté droit, c’est cool, non ?
- Utilisation des objets graphiques pour d’autres personnalisations
Pour réaliser ce genre de choses, nous devons utiliser les objets graphiques, c’est pourquoi il a été dit que nous avions besoin du module graph_objects
pour les diagrammes plus complexes et de plotly_express
pour les diagrammes plus simples.
- Créer un objet figure en utilisant
fig=go.Figure()
. - Pour ajouter un tracé à la figure, utilise
fig.add_trace()
et passe l’objet graphique à l’objet figure. Utilise go.scatter(x,y,mode)
pour créer des objets graphiques pour les diagrammes de dispersion et les diagrammes linéaires.- Ici, nous devons utiliser le paramètre
mode
pour spécifier le style de tracé, par défaut il sera assigné aux lignes, ce qui donnera un tracé linéaire. Et pour Facebook, comme nous avons donnémode='lines+markers'
, il y aura des lignes avec des marqueurs pour les points, un style facile ! - Pour le style de ligne, utilise le paramètre
line
et assigne un dictionnaire avec les différents styles dont tu as besoin.
# Créer un objet figure pour lequel nous pourrons ultérieurement ajouter les tracés fig = go.Figure() # Passer les objets graphiques à la méthode add trace, assigner une série aux paramètres x et y des objets graphiques. 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 particulière fig.add_trace(go.Scatter(x=df_stocks.date, y=df_stocks.GOOG, mode='lines+markers', name='Google', line=dict(color='darkgreen', dash='dot'))) # Plus de style avec la ligne fig.update_layout(title="Données sur le cours de l'action 2018 - 2020", # personnaliser l'axe en utilisant xaxis/yaxis '_' et le style xaxis_title='Price', # personnaliser les différents axes de styles en passant un dictionnaire yaxis=dict( showgrid=False, zeroline=False, showline=False, showticklabels=False, ), # personnaliser l'ensemble du style du graphique plot_bgcolor='white')
Diagrammes en barre #
- Utiliser Plotly Express pour des diagrammes à barres simples
import seaborn as sns import matplotlib.pyplot as plt # Charger l'ensemble de données "tips" df_tips = sns.load_dataset("tips")
Utilise px.bar(data,x,y)
pour créer ton diagramme à barres. Tu peux ajouter une dimension supplémentaire au diagramme à barres en utilisant simplement le paramètre, dans ce cas tu obtiendras un diagramme à barres empilées, si tu le veux côte à côte, tu peux le changer avec le paramètre barmode='group'
. Les extraits ci-dessous ne sont que des images.
# Diagramme à barres empilées px.bar(df_tips, x='sex', y='tip', color='time', title="Pourboires en fonction de l'heure de chaque jour")
# Placer les barres les unes à côté des autres px.bar(df_tips, x="sex", y="tip", color='time', barmode='group')
Seules les personnes qui ont travaillé avec Matplotlib comprendraient la facilité avec laquelle nous réalisons ce tracé dans Plotly !
- Diagrammes en barre personnalisés
Au lieu d’imprimer directement l’objet plotly express, si nous l’enregistrons dans la figure, nous pouvons alors effectuer d’autres personnalisations en utilisant les méthodes update_trace
et update_layout
de la figure.
# Filtrage des données pour les pays dont la population en 2007 est supérieure à 50000000 population = px.data.gapminder() filtered_data = population[(population.year==2007) & (population['pop']>50000000)] # Utiliser des couleurs pour distinguer une dimension fig = px.bar(filtered_data, y='pop', x='country', text='pop', color='country') # Mettre la valeur totale de la barre au-dessus des barres avec 2 valeurs de précision fig.update_traces(texttemplate='%{text:.2s}', textposition='outside') # Faire pivoter les étiquettes de 45 degrés fig.update_layout(xaxis_tickangle=-45)
Si nous n’avions pas indiqué que la dimension de la couleur était le pays, toutes les barres auraient eu la même couleur. L’utilisation du paramètre text
nous a permis de placer la population totale en haut des barres.
Diagrammes de dispersion #
Utilise px.scatter(data,x,y)
pour créer des diagrammes de dispersion simples. Tu peux ajouter des dimensions supplémentaires en utilisant les paramètres color
et size
. En utilisant l’objet graph, utilise go.scatter(data,x,y,mode='markers')
pour créer un diagramme de dispersion, et nous pouvons même ajouter une variable numérique comme dimension avec color
comme paramètre.
# Utilisation de l'ensemble de données Iris incluses df_iris = px.data.iris() # Créer une dispersion personnalisée 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)
Diagrammes circulaires #
Utilise px.Pie(data,values=series_name)
pour créer un diagramme circulaire. Pour d’autres personnalisations, tu peux utiliser l’objet graphique camembert avec go.Pie()
et nous utilisons la fonction update_traces de l’objet figure pour personnaliser l’info de survol, le texte et la quantité de tirage (qui est la même chose qu’explode, si tu es familier avec seaborn).
# Personnaliser le diagramme circulaire fig = go.Figure(go.Pie(labels=population.continent.value_counts().index, values=population.continent.value_counts())) # Utiliser les traces de mise à jour pour personnaliser les informations de survol, le texte, # la quantité de tirage pour chaque part de camembert et le trait 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))
Histogrammes #
Utilise px.histogram(values)
pour créer un histogramme, et tu peux empiler un autre histogramme par-dessus en utilisant le paramètre color
. Et voici une chose étonnante avec les histogrammes, tu peux utiliser le paramètre marginal
pour ajouter une couche d’un autre histogramme sur le dessus, comme une boîte, un violon ou un rug.
Voici un exemple d’ajout d’un diagramme en forme de violon au-dessus d’un histogramme empilé.
# Empilement d'histogrammes basés sur différentes colonnes de données df_tips = px.data.tips() fig = px.histogram(df_tips, x="total_bill", color="sex", marginal='violin') fig.update_layout(bargap=0.2)
Tu peux ainsi :
- survoler les diagrammes à barres pour obtenir plus de détails et interagir avec eux.
- passer la souris sur le diagramme en violon pour voir les détails des quartiles.
- et cliquer sur les étiquettes latérales pour les activer ou les désactiver, c’est vraiment cool, hein ! (je te laisse tester sur un notebook jupyter)