Graphique en barres avec Matplotlib

Beginner

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

Introduction

Matplotlib est une bibliothèque Python populaire utilisée pour la visualisation de données. Elle fournit une large gamme d'outils pour créer des graphiques, des diagrammes et autres visualisations. Dans ce tutoriel, vous allez apprendre à créer un diagramme en barres avec des gradients à l'aide de Matplotlib.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez sur 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.

Importez les bibliothèques nécessaires

Tout d'abord, nous devons importer les bibliothèques nécessaires, qui sont NumPy et Matplotlib. NumPy est une bibliothèque utilisée pour les calculs numériques, tandis que Matplotlib est une bibliothèque utilisée pour la visualisation de données.

import matplotlib.pyplot as plt
import numpy as np

Fixez la graine aléatoire

Nous allons fixer la graine aléatoire pour nous assurer d'obtenir les mêmes nombres aléatoires chaque fois que nous exécutons le code. Cela se fait à l'aide de la fonction np.random.seed().

np.random.seed(19680801)

Définissez la fonction d'image à gradient

Nous devons définir une fonction qui créera une image à gradient basée sur une carte de couleurs. Cette fonction prendra un objet d'axes, la direction du gradient et la plage de la carte de couleurs à utiliser. La fonction générera ensuite l'image à gradient et la renverra.

def gradient_image(ax, direction=0.3, cmap_range=(0, 1), **kwargs):
    """
    Dessine une image à gradient basée sur une carte de couleurs.

    Paramètres
    ----------
    ax : Axes
        Les axes sur lesquels dessiner.
    direction : float
        La direction du gradient. Il s'agit d'un nombre dans
        la plage 0 (=vertical) à 1 (=horizontal).
    cmap_range : float, float
        La fraction (cmin, cmax) de la carte de couleurs qui doit être
        utilisée pour le gradient, où la carte de couleurs complète est (0, 1).
    **kwargs
        Autres paramètres sont transmis à `.Axes.imshow()`.
        En particulier, *cmap*, *extent* et *transform* peuvent être utiles.
    """
    phi = direction * np.pi / 2
    v = np.array([np.cos(phi), np.sin(phi)])
    X = np.array([[v @ [1, 0], v @ [1, 1]],
                  [v @ [0, 0], v @ [0, 1]]])
    a, b = cmap_range
    X = a + (b - a) / X.max() * X
    im = ax.imshow(X, interpolation='bicubic', clim=(0, 1),
                   aspect='auto', **kwargs)
    return im

Définissez la fonction de barre à gradient

Ensuite, nous devons définir une fonction qui créera une barre à gradient. Cette fonction prendra l'objet d'axes, les coordonnées x et y de la barre, la largeur de la barre et la position du bas de la barre. La fonction créera ensuite une image à gradient pour chaque barre et la renverra.

def gradient_bar(ax, x, y, width=0.5, bottom=0):
    for left, top in zip(x, y):
        right = left + width
        gradient_image(ax, extent=(left, right, bottom, top),
                       cmap=plt.cm.Blues_r, cmap_range=(0, 0.8))

Créez le tracé

Maintenant, nous pouvons créer le tracé. Nous allons tout d'abord créer une figure et un objet d'axes. Nous définirons ensuite les limites x et y des axes. Nous créerons un fond à gradient à l'aide de la fonction gradient_image(). Enfin, nous créerons un ensemble de données aléatoires et utiliserons la fonction gradient_bar() pour créer le graphique en barres.

fig, ax = plt.subplots()
ax.set(xlim=(0, 10), ylim=(0, 1))

## image de fond
gradient_image(ax, direction=1, extent=(0, 1, 0, 1), transform=ax.transAxes,
               cmap=plt.cm.RdYlGn, cmap_range=(0.2, 0.8), alpha=0.5)

N = 10
x = np.arange(N) + 0.15
y = np.random.rand(N)
gradient_bar(ax, x, y, width=0.7)
plt.show()

Sommaire

Dans ce tutoriel, vous avez appris à créer un graphique en barres avec des gradients à l'aide de Matplotlib. Vous avez appris à définir la fonction d'image à gradient et la fonction de barre à gradient, et à créer un tracé à l'aide de ces fonctions. Vous avez également appris à fixer la graine aléatoire et à importer les bibliothèques nécessaires.