Gráfico de contornos en una cuadrícula de datos irregular

Beginner

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

Introducción

Esta práctica muestra cómo crear un gráfico de contornos de datos con espaciado irregular en Python utilizando Matplotlib. El gráfico de contornos muestra la distribución bidimensional de los valores de datos utilizando iso-contornos o líneas de contorno. En este ejemplo, compararemos un gráfico de contornos de datos con espaciado irregular interpolado en una cuadrícula regular con un gráfico tricontour para una cuadrícula triangular no estructurada.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.

Importar las bibliotecas necesarias

Comenzamos importando las bibliotecas necesarias para este ejemplo: matplotlib.pyplot y numpy. Además, importamos matplotlib.tri para la triangulación de los datos.

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

Generar datos aleatorios

Generamos datos aleatorios utilizando el método np.random.uniform de NumPy. Generamos npts = 200 puntos de datos con valores de x e y entre -2 y 2. También calculamos los valores de z utilizando la función 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)

Interpolación en una cuadrícula

Creamos un gráfico de contornos de coordenadas de datos con espaciado irregular a través de la interpolación en una cuadrícula. Primero creamos valores de cuadrícula para x e y utilizando np.linspace. Luego interpolamos linealmente los datos (x, y) en una cuadrícula definida por (xi, yi) utilizando tri.LinearTriInterpolator. Graficamos los datos interpolados con el habitual 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

Graficamos los mismos datos utilizando un gráfico tricontour al suministrar directamente las coordenadas desordenadas y con espaciado irregular a 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()

Resumen

Esta práctica demostró cómo crear un gráfico de contornos de datos con espaciado irregular en Python utilizando Matplotlib. Comparamos un gráfico de contornos de datos con espaciado irregular interpolados en una cuadrícula regular frente a un gráfico tricontour para una cuadrícula triangular no estructurada. Los métodos axes.Axes.contour y axes.Axes.tricontour se utilizaron para crear los gráficos de contornos.