Création d'une incrustation zoomée 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

Matplotlib est une bibliothèque populaire de visualisation de données en Python. Elle fournit de nombreux outils pour créer différents types de graphiques et diagrammes. L'une des fonctionnalités utiles de Matplotlib est la capacité de zoomer sur une région spécifique d'un graphique, ce qui peut aider à analyser les données de manière plus approfondie. Dans ce laboratoire, nous allons apprendre à créer un incrustation zoomée à l'aide de Matplotlib.

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.

Importez les bibliothèques nécessaires

Avant de commencer à créer l'incrustation zoomée, nous devons importer les bibliothèques nécessaires. Nous utiliserons matplotlib.pyplot et numpy pour ce laboratoire.

import matplotlib.pyplot as plt
import numpy as np

Créez une figure et des sous-graphiques

Ensuite, nous allons créer une figure et des sous-graphiques pour afficher nos données. Nous allons créer deux sous-graphiques côte à côte pour montrer deux exemples différents d'incrustations zoomées.

fig, (ax, ax2) = plt.subplots(ncols=2, figsize=[6, 3])

Créez une incrustation zoomée avec une échelle de taille

Dans le premier sous-graphique, nous allons créer une incrustation zoomée avec une échelle de taille. Cela montrera comment utiliser la méthode .zoomed_inset_axes pour créer une incrustation zoomée.

## Fixez le rapport d'aspect du graphique à 1
ax.set_aspect(1)

## Créez une incrustation zoomée dans le coin supérieur droit du graphique
axins = zoomed_inset_axes(ax, zoom=0.5, loc='upper right')

## Fixez le nombre d'étiquettes de graduation sur les axes de l'incrustation
axins.yaxis.get_major_locator().set_params(nbins=7)
axins.xaxis.get_major_locator().set_params(nbins=7)

## Cachez les étiquettes de graduation sur les axes de l'incrustation
axins.tick_params(labelleft=False, labelbottom=False)

## Définissez une fonction pour ajouter une échelle de taille au graphique
def add_sizebar(ax, size):
    asb = AnchoredSizeBar(ax.transData,
                          size,
                          str(size),
                          loc=8,
                          pad=0.1, borderpad=0.5, sep=5,
                          frameon=False)
    ax.add_artist(asb)

## Ajoutez une échelle de taille au graphique principal et au graphique incrusté
add_sizebar(ax, 0.5)
add_sizebar(axins, 0.5)

Créez une image avec un zoom d'incrustation et une incrustation marquée

Dans le second sous-graphique, nous allons créer une image avec un zoom d'incrustation et une incrustation marquée. Cela montrera comment utiliser la méthode .mark_inset pour marquer la région d'intérêt et la connecter aux axes de l'incrustation.

## Chargez les données d'échantillonnage pour l'image
Z = cbook.get_sample_data("axes_grid/bivariate_normal.npy")  ## Tableau 15x15
extent = (-3, 4, -4, 3)
Z2 = np.zeros((150, 150))
ny, nx = Z.shape
Z2[30:30+ny, 30:30+nx] = Z

## Affichez l'image dans le sous-graphique
ax2.imshow(Z2, extent=extent, origin="lower")

## Créez une incrustation zoomée dans le coin supérieur gauche du graphique
axins2 = zoomed_inset_axes(ax2, zoom=6, loc=1)

## Affichez l'image dans le graphique incrusté
axins2.imshow(Z2, extent=extent, origin="lower")

## Fixez les limites x et y du graphique incrusté pour afficher la région d'intérêt
x1, x2, y1, y2 = -1.5, -0.9, -2.5, -1.9
axins2.set_xlim(x1, x2)
axins2.set_ylim(y1, y2)

## Fixez le nombre d'étiquettes de graduation sur les axes de l'incrustation
axins2.yaxis.get_major_locator().set_params(nbins=7)
axins2.xaxis.get_major_locator().set_params(nbins=7)

## Cachez les étiquettes de graduation sur les axes de l'incrustation
axins2.tick_params(labelleft=False, labelbottom=False)

## Marquez la région d'intérêt et la connectez aux axes de l'incrustation
mark_inset(ax2, axins2, loc1=2, loc2=4, fc="none", ec="0.5")

Affichez le graphique

Enfin, nous allons afficher le graphique en utilisant la méthode plt.show().

plt.show()

Récapitulatif

Dans ce laboratoire, nous avons appris à créer une incrustation zoomée à l'aide de Matplotlib. Nous avons utilisé les méthodes .zoomed_inset_axes et .mark_inset pour créer deux exemples différents d'incrustations zoomées. En utilisant ces méthodes, nous pouvons analyser les données de manière plus approfondie et obtenir des informations qui peuvent ne pas être visibles dans le graphique d'origine.