Tracer des images non uniformes avec 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 laboratoire fournit un guide étape par étape sur la manière d'utiliser la classe NonUniformImage de la bibliothèque Matplotlib de Python. NonUniformImage permet aux utilisateurs de tracer des images avec des positions de pixels non uniformes.

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

Avant de créer une NonUniformImage, nous devons importer les bibliothèques nécessaires. Dans cet exemple, nous utiliserons numpy et matplotlib.

import matplotlib.pyplot as plt
import numpy as np

from matplotlib import cm
from matplotlib.image import NonUniformImage

Création de tableaux linéaires et non linéaires

Nous devons créer deux tableaux, l'un avec des valeurs linéaires et l'autre avec des valeurs non linéaires. Ces tableaux seront utilisés pour créer notre NonUniformImage.

## Tableau linéaire x pour les centres des cellules :
x = np.linspace(-4, 4, 9)

## Tableau x hautement non linéaire :
x2 = x**3

y = np.linspace(-4, 4, 9)

z = np.sqrt(x[np.newaxis, :]**2 + y[:, np.newaxis]**2)

Création de sous-graphiques et de NonUniformImage

Maintenant, nous créons des sous-graphiques et ajoutons la NonUniformImage à chacun d'eux. Nous allons créer quatre sous-graphiques, deux avec une interpolation 'nearest' et deux avec une interpolation 'bilinear'. L'argument clé-mot interpolation définit le type d'interpolation utilisé pour afficher l'image.

## Création de sous-graphiques
fig, axs = plt.subplots(nrows=2, ncols=2, layout='constrained')
fig.suptitle('Classe NonUniformImage', fontsize='large')

## Interpolation nearest
ax = axs[0, 0]
im = NonUniformImage(ax, interpolation='nearest', extent=(-4, 4, -4, 4), cmap=cm.Purples)
im.set_data(x, y, z)
ax.add_image(im)
ax.set_xlim(-4, 4)
ax.set_ylim(-4, 4)
ax.set_title('nearest')

ax = axs[0, 1]
im = NonUniformImage(ax, interpolation='nearest', extent=(-64, 64, -4, 4), cmap=cm.Purples)
im.set_data(x2, y, z)
ax.add_image(im)
ax.set_xlim(-64, 64)
ax.set_ylim(-4, 4)
ax.set_title('nearest')

## Interpolation bilinéaire
ax = axs[1, 0]
im = NonUniformImage(ax, interpolation='bilinear', extent=(-4, 4, -4, 4), cmap=cm.Purples)
im.set_data(x, y, z)
ax.add_image(im)
ax.set_xlim(-4, 4)
ax.set_ylim(-4, 4)
ax.set_title('bilinear')

ax = axs[1, 1]
im = NonUniformImage(ax, interpolation='bilinear', extent=(-64, 64, -4, 4), cmap=cm.Purples)
im.set_data(x2, y, z)
ax.add_image(im)
ax.set_xlim(-64, 64)
ax.set_ylim(-4, 4)
ax.set_title('bilinear')

plt.show()

Interprétation des résultats

Les sous-graphiques afficheront deux types différents d'interpolation, 'nearest' et 'bilinear'. L'interpolation 'nearest' affichera la valeur du pixel du voisin le plus proche, tandis que l'interpolation 'bilinear' affichera la moyenne pondérée des quatre plus proches voisins.

Sommaire

NonUniformImage est un outil pratique pour tracer des images avec des positions de pixels non uniformes. Ce laboratoire a fourni un guide étape par étape sur la manière d'utiliser NonUniformImage dans la bibliothèque Matplotlib de Python, y compris l'importation des bibliothèques nécessaires, la création de tableaux linéaires et non linéaires, la création de sous-graphiques et de NonUniformImage, et l'interprétation des résultats.