Distribution discrète sous forme de diagramme en barres horizontales

Beginner

This tutorial is from open-source community. Access the source code

Introduction

Dans ce laboratoire, nous allons apprendre à visualiser des distributions discrètes à l'aide de diagrammes en barres empilées horizontales. Nous utiliserons Matplotlib, une bibliothèque de tracé populaire en Python, pour créer une visualisation des résultats d'un sondage.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet d'adresses pour accéder au carnet Jupyter pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations du carnet Jupyter.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.

Importation des bibliothèques

Tout d'abord, nous allons importer les bibliothèques nécessaires. Nous utiliserons Matplotlib et Numpy dans ce laboratoire.

import matplotlib.pyplot as plt
import numpy as np

Préparer les données

Nous devons définir les catégories et les résultats du sondage. Dans cet exemple, nous avons un sondage où les gens ont évalué leur accord sur des questions selon une échelle à cinq éléments. Nous définirons les catégories comme category_names et les résultats du sondage comme results.

category_names = ['Fortement en désaccord', 'Désaccord',
                  'Ni d\'accord ni de désaccord', 'Accord', 'Fortement d\'accord']
results = {
    'Question 1': [10, 15, 17, 32, 26],
    'Question 2': [26, 22, 29, 10, 13],
    'Question 3': [35, 37, 7, 2, 19],
    'Question 4': [32, 11, 9, 15, 33],
    'Question 5': [21, 29, 5, 5, 40],
    'Question 6': [8, 19, 5, 30, 38]
}

Définir une fonction

Maintenant, nous allons définir une fonction appelée survey qui prend en entrée les results et les category_names et crée une visualisation sous forme de diagramme en barres empilées horizontales.

def survey(results, category_names):
    """
    Paramètres
    ----------
    results : dict
        Une correspondance entre les étiquettes des questions et une liste de réponses par catégorie.
        On suppose que toutes les listes contiennent le même nombre d'entrées et qu'elles correspondent à la longueur de *category_names*.
    category_names : list of str
        Les étiquettes des catégories.
    """
    ## Convertir les résultats et les catégories en tableaux numpy
    labels = list(results.keys())
    data = np.array(list(results.values()))

    ## Calculer les sommes cumulatives des données pour l'empilement horizontal
    data_cum = data.cumsum(axis=1)

    ## Définir les couleurs des catégories
    category_colors = plt.colormaps['RdYlGn'](
        np.linspace(0.15, 0.85, data.shape[1]))

    ## Créer le graphique et définir les propriétés des axes
    fig, ax = plt.subplots(figsize=(9.2, 5))
    ax.inverse_yaxis()
    ax.xaxis.set_visible(False)
    ax.set_xlim(0, np.sum(data, axis=1).max())

    ## Créer les barres empilées et ajouter les étiquettes des barres
    for i, (colname, color) in enumerate(zip(category_names, category_colors)):
        widths = data[:, i]
        starts = data_cum[:, i] - widths
        rects = ax.barh(labels, widths, left=starts, height=0.5,
                        label=colname, color=color)
        r, g, b, _ = color
        text_color = 'white' if r * g * b < 0.5 else 'darkgrey'
        ax.bar_label(rects, label_type='center', color=text_color)

    ## Ajouter la légende
    ax.legend(ncols=len(category_names), bbox_to_anchor=(0, 1),
              loc='lower left', fontsize='small')

    return fig, ax

Appeler la fonction et afficher les résultats

Enfin, nous allons appeler la fonction survey avec les results et les category_names en tant qu'entrées et afficher la visualisation résultante.

survey(results, category_names)
plt.show()

Résumé

Dans ce laboratoire, nous avons appris à créer un diagramme en barres empilées horizontales pour visualiser des distributions discrètes à l'aide de Matplotlib. Nous avons défini les catégories et les résultats du sondage, créé une fonction pour générer le graphique et affiché les résultats. Cette technique peut être utile pour visualiser les résultats d'un sondage ou d'autres types de distributions discrètes.