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.