Graphiques en 3D

Courbe (ligne)

La classe go.Scatter() avec mode='lines' permet de tracer des courbes en reliant des points selon leurs coordonnées, idéale pour visualiser des séries temporelles ou des tendances continues.

Nuage de points

La classe go.Scatter() avec mode='markers' est utilisée pour représenter des points isolés sur un plan cartésien, utile pour observer des relations entre deux variables numériques.

Graphique en barres

La classe go.Bar() permet de créer des barres verticales ou horizontales pour comparer visuellement des valeurs entre différentes catégories.

Histogramme

La classe go.Histogram() permet de représenter la distribution d’une variable en regroupant les valeurs dans des intervalles et en affichant leur fréquence.

Boîte à moustaches (boxplot)

La classe go.Box() permet de visualiser la distribution statistique d’une variable avec ses médiane, quartiles et valeurs extrêmes, utile pour détecter les outliers.

Diagramme en violon

La classe go.Violin() combine les avantages d’un boxplot avec une estimation de la densité de distribution, permettant une analyse plus fine des données.

Graphique en aires

En utilisant go.Scatter() avec l’option fill='tozeroy', on peut remplir l’espace sous la courbe, ce qui est idéal pour représenter une évolution ou une accumulation dans le temps.

Diagramme circulaire (camembert)

La classe go.Pie() permet d’afficher les proportions relatives d’un ensemble de catégories sous forme de parts d’un cercle.

Graphique en entonnoir (funnel)

La classe go.Funnel() permet de visualiser des données à travers plusieurs étapes d’un processus, mettant en évidence les pertes ou filtrages progressifs.

Carte de chaleur (heatmap)

La classe go.Heatmap() est utilisée pour afficher une matrice de valeurs numériques à l’aide de variations de couleur, souvent utilisée pour les corrélations ou les valeurs agrégées.

Tableau (table)

La classe go.Table() permet d’afficher des données tabulaires de manière interactive, avec prise en charge des en-têtes, formats numériques et mise en page personnalisée.

Graphique en chandeliers (Candlestick)

La classe go.Candlestick() est couramment utilisée pour représenter les variations de prix dans les marchés financiers, en montrant les valeurs d’ouverture, de fermeture, les plus hauts et les plus bas.

Graphique OHLC

La classe go.Ohlc() est une alternative au candlestick, permettant également de visualiser les données boursières via les prix d’ouverture, haut, bas et clôture.

Fonctions :

  • updatemenus (sans Dash)

    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()
    Résultat du code

    Explication du code :

    1. Création d'un graphique de base :

      • Un graphique est créé avec une courbe linéaire (mode 'lines'), où les données X et Y sont extraites d'un DataFrame simple.

    2. 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.

    3. 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ètres x et y.

    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.

  • 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)
    Résultat du code

    Explication du code :

    1. 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.

    2. 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 via Input('slider', 'value').

    3. 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 et step en fonction de vos besoins. Par exemple, si vous utilisez un slider pour choisir un pourcentage, vous pouvez définir min=0, max=100 et step=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)
    Résultat du code

    Explication du code :

    1. 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].

    2. 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é via Input('range-slider', 'value').

    3. 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)
    Résultat du code

    Explication du code :

    1. 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.

    2. Callback Dash : Un callback est défini pour mettre à jour un html.Div en fonction des cases sélectionnées. La fonction update_output prend les valeurs des cases cochées et les affiche sous forme de texte dans le Div.

    3. 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.