Génération d'images avec une colormap dans Matplotlib

PythonPythonBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Ce tutoriel vous guidera tout au long du processus de création d'un ensemble d'images avec une seule colormap, une seule norme et une seule barre de couleur dans la bibliothèque Matplotlib de Python. Vous allez apprendre à générer des données, à définir les échelles de couleur et à mettre à jour les images pour répondre aux changements dans la norme d'autres images.

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 de notes pour accéder au carnet Jupyter Notebook pour pratiquer.

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

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 devons importer les bibliothèques nécessaires : numpy et matplotlib. Nous allons également définir une graine aléatoire pour garantir la reproductibilité.

import matplotlib.pyplot as plt
import numpy as np

Générer des données et créer des sous-graphiques

Ensuite, nous allons générer des données pour nos images. Nous allons créer une grille 3x2 de sous-graphiques, chacun contenant un tableau aléatoire de valeurs.

np.random.seed(19680801)
Nr = 3
Nc = 2

fig, axs = plt.subplots(Nr, Nc)
fig.suptitle('Multiple images')

images = []
for i in range(Nr):
    for j in range(Nc):
        ## Générer des données avec une plage qui varie d'un graphique à l'autre.
        data = ((1 + i + j) / 10) * np.random.rand(10, 20)
        images.append(axs[i, j].imshow(data))
        axs[i, j].label_outer()

Définir l'échelle de couleur et créer une barre de couleur

Maintenant, nous allons définir l'échelle de couleur pour nos images et créer une barre de couleur pour montrer la plage de valeurs. Nous allons trouver les valeurs minimales et maximales pour toutes les images et normaliser l'échelle de couleur en conséquence.

vmin = min(image.get_array().min() for image in images)
vmax = max(image.get_array().max() for image in images)
norm = colors.Normalize(vmin=vmin, vmax=vmax)
for im in images:
    im.set_norm(norm)

fig.colorbar(images[0], ax=axs, orientation='horizontal', fraction=.1)

Mettre à jour les images

Enfin, nous allons mettre à jour les images pour qu'elles répondent aux changements dans la norme des autres images. Cela nous permettra de modifier la colormap et l'échelle de couleur d'une image et d'avoir toutes les autres mises à jour en conséquence.

def update(changed_image):
    for im in images:
        if (changed_image.get_cmap()!= im.get_cmap()
                or changed_image.get_clim()!= im.get_clim()):
            im.set_cmap(changed_image.get_cmap())
            im.set_clim(changed_image.get_clim())

for im in images:
    im.callbacks.connect('changed', update)

Sommaire

Dans ce laboratoire, nous avons appris à créer un ensemble d'images avec une seule colormap, une seule norme et une seule barre de couleur dans la bibliothèque Matplotlib de Python. Nous avons généré des données, défini des échelles de couleur et mis à jour les images pour qu'elles répondent aux changements dans la norme des autres images. Il s'agit d'une technique utile pour visualiser plusieurs ensembles de données avec la même échelle de couleur et la même colormap.