Tracé de contour sur une grille de données irrégulière

Beginner

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

Introduction

Ce laboratoire montre comment créer un tracé de contour de données à espacement irrégulier en Python à l'aide de Matplotlib. Le tracé de contour montre la distribution 2D des valeurs de données en utilisant des iso-contours ou des lignes de contour. Dans cet exemple, nous comparerons un tracé de contour de données à espacement irrégulier interpolées sur une grille régulière avec un tracé tricontour pour une grille triangulaire non structurée.

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.

Importez les bibliothèques nécessaires

Nous commençons par importer les bibliothèques nécessaires pour cet exemple : matplotlib.pyplot et numpy. De plus, nous importons matplotlib.tri pour la triangulation des données.

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.tri as tri

Générez des données aléatoires

Nous générons des données aléatoires en utilisant la méthode np.random.uniform de NumPy. Nous générons npts = 200 points de données avec des valeurs de x et y comprises entre -2 et 2. Nous calculons également les valeurs de z en utilisant la fonction z = x * np.exp(-x**2 - y**2).

np.random.seed(19680801)
npts = 200
x = np.random.uniform(-2, 2, npts)
y = np.random.uniform(-2, 2, npts)
z = x * np.exp(-x**2 - y**2)

Interpolation sur une grille

Nous créons un tracé de contour des coordonnées de données à espacement irrégulier par interpolation sur une grille. Nous créons d'abord des valeurs de grille pour x et y en utilisant np.linspace. Nous interpolons ensuite linéairement les données (x, y) sur une grille définie par (xi, yi) en utilisant tri.LinearTriInterpolator. Nous traçons les données interpolées avec le contour habituel axes.Axes.contour.

ngridx = 100
ngridy = 200
xi = np.linspace(-2.1, 2.1, ngridx)
yi = np.linspace(-2.1, 2.1, ngridy)

triang = tri.Triangulation(x, y)
interpolator = tri.LinearTriInterpolator(triang, z)
Xi, Yi = np.meshgrid(xi, yi)
zi = interpolator(Xi, Yi)

fig, ax1 = plt.subplots()
cntr1 = ax1.contourf(xi, yi, zi, levels=14, cmap="RdBu_r")
ax1.plot(x, y, 'ko', ms=3)
ax1.set(xlim=(-2, 2), ylim=(-2, 2))
ax1.set_title('Contour Plot of Irregularly Spaced Data Interpolated on a Grid')
fig.colorbar(cntr1, ax=ax1)
plt.show()

Tricontour

Nous traçons les mêmes données en utilisant un tracé tricontour en fournissant directement les coordonnées désordonnées et à espacement irrégulier à axes.Axes.tricontour.

fig, ax2 = plt.subplots()
cntr2 = ax2.tricontourf(x, y, z, levels=14, cmap="RdBu_r")
ax2.plot(x, y, 'ko', ms=3)
ax2.set(xlim=(-2, 2), ylim=(-2, 2))
ax2.set_title('Tricontour Plot of Irregularly Spaced Data')
fig.colorbar(cntr2, ax=ax2)
plt.show()

Résumé

Ce laboratoire a démontré comment créer un tracé de contour de données à espacement irrégulier en Python à l'aide de Matplotlib. Nous avons comparé un tracé de contour de données à espacement irrégulier interpolé sur une grille régulière avec un tracé tricontour pour une grille triangulaire non structurée. Les méthodes axes.Axes.contour et axes.Axes.tricontour ont été utilisées pour créer les tracés de contour.