Interactivité avancée
-
updatemenus()
L'option updatemenus permet de créer des menus interactifs tels que des boutons ou des sélecteurs dans un graphique Plotly pour modifier dynamiquement certains éléments du graphique, comme le type de graphique, les axes ou les couleurs. Ces menus peuvent être utilisés sans nécessiter de Dash ou d'autres frameworks externes.
Importation :
import plotly.graph_objects as go
Attributs :
Paramètre Type Description Valeur par défaut buttons
list Liste de boutons définissant l’action de mise à jour. []
direction
str La direction dans laquelle les boutons seront disposés. Peut être ‘left’, ‘right’, ‘down’, ou ‘up’. 'down'
showactive
bool Indique si le bouton actif doit être mis en surbrillance. True
x
float Position horizontale du menu sur le graphique. 0.5
y
float Position verticale du menu sur le graphique. 1.05
active
int Index du bouton actif au départ. 0
Exemple de code :
import plotly.graph_objects as go import pandas as pd # Création d'un DataFrame simple df = pd.DataFrame({ 'X': [1, 2, 3, 4, 5], 'Y': [10, 11, 12, 13, 14] }) # Créer un graphique de base fig = go.Figure() # Ajouter une courbe linéaire initiale fig.add_trace(go.Scatter(x=df['X'], y=df['Y'], mode='lines', name='Ligne')) # Ajouter un bouton pour changer le type de graphique fig.update_layout( updatemenus=[ { 'buttons': [ { 'label': 'Ligne', 'method': 'relayout', 'args': [{'xaxis.title': 'X', 'yaxis.title': 'Y'}] }, { 'label': 'Barres', 'method': 'relayout', 'args': [{'type': 'bar'}] } ], 'direction': 'down', # Menu déroulant 'showactive': True, # Mettre en surbrillance l'élément actif 'active': 0, # État initial du bouton actif 'x': 0.17, # Positionnement du menu horizontalement 'xanchor': 'left', # Alignement du menu 'y': 1.15, # Positionnement vertical 'yanchor': 'top', # Alignement du menu } ] ) # Afficher le graphique fig.show()
Explication du code :
-
Création d’un graphique de base :
-
Un graphique est créé avec une courbe linéaire (mode
'lines'
), où les donnéesX
etY
sont extraites d’un DataFrame simple.
-
-
Utilisation de
updatemenus
:-
La clé
updatemenus
est utilisée pour ajouter un menu interactif avec des boutons pour changer le type de graphique entre une courbe linéaire et un graphique en barres. -
Les boutons définissent l’action à effectuer :
-
Le bouton « Ligne » réinitialise l’affichage des axes.
-
Le bouton « Barres » modifie le type de graphique en barres.
-
-
-
Positionnement et affichage du menu :
-
Le menu est affiché sous forme de liste déroulante (
direction: 'down'
) et est positionné sur le graphique grâce aux paramètresx
ety
.
-
Remarques :
-
updatemenus
est particulièrement utile pour ajouter des contrôles interactifs directement dans le graphique Plotly, ce qui améliore l’interactivité sans avoir besoin de frameworks externes comme Dash. -
Les boutons peuvent être configurés pour effectuer une variété d’actions, allant de la modification des données affichées à des ajustements visuels comme les axes, les couleurs, et même la disposition du graphique.
-
-
Filtrage dynamique avec Dash (curseur ou dropdown)
Le filtrage dynamique dans Dash permet aux utilisateurs de filtrer et d'explorer les données en temps réel en fonction de leurs besoins, sans avoir à recharger la page. Cela se fait généralement en combinant des composants interactifs, tels que des curseurs, des listes déroulantes, des cases à cocher, et des graphiques. Le résultat du filtrage est souvent affiché dans des graphiques ou des tableaux mis à jour en temps réel.
Importation :
Attributs :
Exemple de code :
Explication du code :
-
dcc.Slider (curseur numérique)
dcc.Slider est un composant Dash qui permet de créer un curseur numérique, permettant à l'utilisateur de sélectionner une seule valeur dans une plage définie. Il est idéal pour des cas où l'utilisateur doit choisir une valeur numérique, comme dans des graphiques, des paramètres ou des contrôles de seuil.
Importation :
import dash_core_components as dcc
Attributs :
Paramètre Type Description Valeur par défaut min
int ou float La valeur minimale possible du curseur. 0
max
int ou float La valeur maximale possible du curseur. 100
step
int ou float La valeur par laquelle le curseur est ajusté (ex : 1, 0.1, etc.). 1
marks
dict Dictionnaire où chaque clé est une valeur et la valeur correspondante est l’étiquette à afficher pour cette valeur sur le curseur. {}
value
int ou float La valeur initiale du curseur. 0
id
str Identifiant unique pour le composant, nécessaire pour l’interaction avec les callbacks. None
disabled
bool Permet de désactiver l’interaction avec le composant (le curseur devient non interactif). False
Exemple de code :
import dash import dash_core_components as dcc import dash_html_components as html from dash.dependencies import Input, Output # Initialisation de l'application Dash app = dash.Dash(__name__) # Mise en place du layout avec un dcc.Slider pour une valeur numérique app.layout = html.Div([ dcc.Slider( id='slider', min=0, max=100, step=1, marks={i: str(i) for i in range(0, 101, 10)}, # Marque les multiples de 10 value=50 # Valeur initiale du curseur ), html.Div(id='output-slider') ]) # Callback pour mettre à jour l'affichage en fonction de la valeur sélectionnée @app.callback( Output('output-slider', 'children'), [Input('slider', 'value')] ) def update_output(value): return f'Valeur sélectionnée : {value}' # Lancer l'application if __name__ == '__main__': app.run_server(debug=True)
Explication du code :
-
Création du composant Slider : Le
dcc.Slider
crée un curseur numérique avec une plage de valeurs allant de 0 à 100, avec des étapes de 1. Des marques sont affichées tous les 10 unités sur le curseur. La valeur initiale du curseur est définie à 50. -
Callback Dash : Un callback est utilisé pour afficher la valeur sélectionnée par l’utilisateur dans un
html.Div
. La valeur du curseur est récupérée viaInput('slider', 'value')
. -
Affichage dynamique : La valeur du curseur est mise à jour en temps réel dans l’interface, et l’utilisateur voit la valeur sélectionnée dans le
Div
.
Remarque importante :
-
Plage et étape : Vous pouvez ajuster les valeurs de
min
,max
etstep
en fonction de vos besoins. Par exemple, si vous utilisez un slider pour choisir un pourcentage, vous pouvez définirmin=0
,max=100
etstep=1
. -
Marques personnalisées : L’attribut
marks
est utilisé pour personnaliser l’apparence des valeurs sur le curseur. Vous pouvez l’utiliser pour afficher des valeurs significatives, comme des intervalles de temps, des pourcentages, ou des catégories spécifiques. -
Interaction avec les callbacks :
dcc.Slider
fonctionne très bien avec les callbacks pour interagir avec d’autres éléments de l’application, comme des graphiques ou des filtres.
-
-
dcc.RangeSlider (intervalle de dates ou valeurs)
dcc.RangeSlider est un composant Dash qui permet de créer un curseur (slider) pour sélectionner un intervalle de valeurs numériques ou de dates. Il est idéal pour les cas où l'utilisateur doit spécifier une plage, comme une période temporelle ou une plage de valeurs dans un graphique ou un tableau.
Importation :
import dash_core_components as dcc
Attributs :
Paramètre Type Description Valeur par défaut min
int ou float La valeur minimale possible du curseur. 0
max
int ou float La valeur maximale possible du curseur. 100
step
int ou float La valeur par laquelle l’intervalle est divisé (ex : 1, 0.5, etc.). 1
marks
dict Dictionnaire où chaque clé est une valeur et la valeur correspondante est l’étiquette à afficher pour cette valeur sur le curseur. {}
value
list Liste de deux valeurs représentant l’intervalle sélectionné (min et max). [min, max]
id
str Identifiant unique pour le composant, nécessaire pour l’interaction avec les callbacks. None
disabled
bool Permet de désactiver l’interaction avec le composant (le curseur devient non interactif). False
marks_position
str Détermine la position des marques : soit « bottom », « top », « both ». 'bottom'
Exemple de code :
import dash import dash_core_components as dcc import dash_html_components as html from dash.dependencies import Input, Output # Initialisation de l'application Dash app = dash.Dash(__name__) # Mise en place du layout avec un dcc.RangeSlider pour une plage de valeurs app.layout = html.Div([ dcc.RangeSlider( id='range-slider', min=0, max=100, step=1, marks={i: str(i) for i in range(0, 101, 10)}, # Marque les multiples de 10 value=[20, 80], # Plage de valeurs par défaut ), html.Div(id='output-range') ]) # Callback pour mettre à jour l'affichage en fonction de l'intervalle sélectionné @app.callback( Output('output-range', 'children'), [Input('range-slider', 'value')] ) def update_output(value): return f'Plage sélectionnée : {value[0]} à {value[1]}' # Lancer l'application if __name__ == '__main__': app.run_server(debug=True)
Explication du code :
-
Création du composant RangeSlider : Le
dcc.RangeSlider
crée un curseur avec une plage de valeurs allant de 0 à 100, avec des étapes de 1. Des marques sont affichées tous les 10 unités sur le curseur. La plage initiale est définie à [20, 80]. -
Callback Dash : Un callback est utilisé pour afficher la plage sélectionnée par l’utilisateur dans un
html.Div
. L’intervalle sélectionné est récupéré viaInput('range-slider', 'value')
. -
Affichage dynamique : La valeur du curseur est mise à jour en temps réel dans l’interface et l’utilisateur voit l’intervalle sélectionné dans le
Div
.
Remarque importante :
-
Intervalle de dates : Si vous souhaitez utiliser le
RangeSlider
pour des intervalles de dates, vous pouvez convertir les dates en entiers (par exemple, le nombre de jours depuis une date de référence) et utiliser ces valeurs comme minimum, maximum et étapes pour le curseur. -
Interaction avec les callbacks : Le
RangeSlider
est conçu pour être utilisé avec des callbacks, permettant d’interagir dynamiquement avec d’autres éléments du tableau de bord, comme des graphiques ou des filtres. -
Affichage des marques : L’attribut
marks
est utilisé pour personnaliser l’apparence des valeurs sur le curseur. Vous pouvez personnaliser les marques pour améliorer l’expérience utilisateur, par exemple, en affichant des dates ou des étiquettes compréhensibles.
-
-
dcc.Checklist (cases à cocher)
dcc.Checklist est un composant Dash qui permet de créer une liste de cases à cocher (checkboxes). Ce composant peut être utilisé pour permettre aux utilisateurs de sélectionner une ou plusieurs options parmi une liste d'éléments. Il est souvent utilisé pour des filtres ou des options de configuration.
Importation :
import dash_core_components as dcc
Attributs :
Paramètre Type Description Valeur par défaut options
list Liste de dictionnaires contenant les options à afficher sous forme de cases à cocher. Chaque option doit avoir une clé label
pour l’étiquette et une clévalue
pour la valeur associée.[]
value
list Liste des valeurs des options actuellement sélectionnées. []
id
str Identifiant unique pour le composant, nécessaire pour l’interaction avec les callbacks. None
inline
bool Détermine si les cases à cocher seront affichées horizontalement (en ligne) ou verticalement. False
disabled
bool Permet de désactiver l’interaction avec le composant (les cases à cocher ne peuvent pas être modifiées). False
Exemple de code :
import dash import dash_core_components as dcc import dash_html_components as html from dash.dependencies import Input, Output # Initialisation de l'application Dash app = dash.Dash(__name__) # Mise en place du layout avec un dcc.Checklist app.layout = html.Div([ dcc.Checklist( id='checklist-example', options=[ {'label': 'Option 1', 'value': '1'}, {'label': 'Option 2', 'value': '2'}, {'label': 'Option 3', 'value': '3'} ], value=['1'], # Valeur par défaut (Option 1 sélectionnée) inline=True # Affichage en ligne ), html.Div(id='output-container') ]) # Callback pour mettre à jour l'affichage en fonction des cases cochées @app.callback( Output('output-container', 'children'), [Input('checklist-example', 'value')] ) def update_output(selected_values): return f'Vous avez sélectionné : {", ".join(selected_values)}' # Lancer l'application if __name__ == '__main__': app.run_server(debug=True)
Explication du code :
-
Création du composant Checklist : Le
dcc.Checklist
crée une liste de cases à cocher avec trois options : ‘Option 1’, ‘Option 2’ et ‘Option 3’. Par défaut, la case ‘Option 1’ est sélectionnée. -
Callback Dash : Un callback est défini pour mettre à jour un
html.Div
en fonction des cases sélectionnées. La fonctionupdate_output
prend les valeurs des cases cochées et les affiche sous forme de texte dans leDiv
. -
Affichage en ligne : Grâce à l’attribut
inline=True
, les cases à cocher sont affichées côte à côte (horizontalement).
Remarque importante :
-
Interaction avec les callbacks :
dcc.Checklist
est particulièrement utile pour interagir avec d’autres éléments de l’interface utilisateur. Le tableau de bord se met à jour dynamiquement selon les sélections faites par l’utilisateur. -
Accessibilité :
dcc.Checklist
permet aussi d’implémenter une interface facile d’utilisation où l’utilisateur peut facilement sélectionner plusieurs options. -
Usage des options : Les options sont définies sous forme de dictionnaires, chaque élément ayant une étiquette (label) et une valeur (value). La valeur peut être utilisée dans un callback pour manipuler les résultats ou actions en fonction des sélections de l’utilisateur.
-