Creando gráficos de contorno con Python Matplotlib

PythonPythonBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Esta práctica es un tutorial paso a paso sobre cómo crear diagramas de contorno utilizando Python Matplotlib. Los diagramas de contorno son útiles para visualizar datos tridimensionales en dos dimensiones. En este tutorial, ilustraremos el trazado de contornos simples, los contornos en una imagen con una barra de colores para los contornos y los contornos etiquetados.

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

Antes de comenzar a crear nuestro diagrama de contorno, necesitamos importar las bibliotecas necesarias. Para este tutorial, usaremos numpy y matplotlib.

import matplotlib.pyplot as plt
import numpy as np

Crear datos

Necesitamos crear los datos que usaremos para crear el diagrama de contorno. En este ejemplo, crearemos dos funciones gaussianas bidimensionales.

delta = 0.025
x = np.arange(-3.0, 3.0, delta)
y = np.arange(-2.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = np.exp(-X**2 - Y**2)
Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
Z = (Z1 - Z2) * 2

Crear un diagrama de contorno simple con etiquetas

Ahora que tenemos nuestros datos, podemos crear un diagrama de contorno simple con etiquetas usando los colores predeterminados.

fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z)
ax.clabel(CS, inline=True, fontsize=10)
ax.set_title('Simplest default with labels')

Colocar etiquetas de contorno manualmente

También podemos colocar etiquetas de contorno manualmente proporcionando una lista de posiciones (en coordenadas de datos).

fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z)
manual_locations = [
    (-1, -1.4), (-0.62, -0.7), (-2, 0.5), (1.7, 1.2), (2.0, 1.4), (2.4, 1.7)]
ax.clabel(CS, inline=True, fontsize=10, manual=manual_locations)
ax.set_title('labels at selected locations')

Establecer los colores de los contornos

Podemos forzar a que todos los contornos tengan el mismo color o establecer que los contornos negativos sean sólidos en lugar de discontinuos.

fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z, 6, colors='k')  ## Los contornos negativos por defecto son discontinuos.
ax.clabel(CS, fontsize=9, inline=True)
ax.set_title('Single color - negative contours dashed')
plt.rcParams['contour.negative_linestyle'] = 'solid'
fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z, 6, colors='k')  ## Los contornos negativos por defecto son discontinuos.
ax.clabel(CS, fontsize=9, inline=True)
ax.set_title('Single color - negative contours solid')

Especificar manualmente los colores de los contornos

También podemos especificar manualmente los colores de los contornos.

fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z, 6,
                linewidths=np.arange(.5, 4,.5),
                colors=('r', 'green', 'blue', (1, 1, 0), '#afeeee', '0.5'),
                )
ax.clabel(CS, fontsize=9, inline=True)
ax.set_title('Crazy lines')

Utilizar una mapa de colores para especificar los colores de los contornos

Podemos utilizar un mapa de colores para especificar los colores de las líneas de contorno.

fig, ax = plt.subplots()
im = ax.imshow(Z, interpolation='bilinear', origin='lower',
               cmap=cm.gray, extent=(-3, 3, -2, 2))
levels = np.arange(-1.2, 1.6, 0.2)
CS = ax.contour(Z, levels, origin='lower', cmap='flag', extend='both',
                linewidths=2, extent=(-3, 3, -2, 2))

## Aumentar el grosor del contorno cero.
CS.collections[6].set_linewidth(4)

ax.clabel(CS, levels[1::2],  ## etiquetar cada segundo nivel
          inline=True, fmt='%1.1f', fontsize=14)

## crear una barra de colores para las líneas de contorno
CB = fig.colorbar(CS, shrink=0.8)

ax.set_title('Lines with colorbar')

## Todavía podemos agregar una barra de colores para la imagen también.
CBI = fig.colorbar(im, orientation='horizontal', shrink=0.8)

## Esto hace que la barra de colores original se vea un poco fuera de lugar,
## así que mejoraremos su posición.

l, b, w, h = ax.get_position().bounds
ll, bb, ww, hh = CB.ax.get_position().bounds
CB.ax.set_position([ll, b + 0.1*h, ww, h*0.8])

Resumen

En este laboratorio, hemos aprendido cómo crear gráficos de contorno utilizando Python Matplotlib. Hemos cubierto la creación de un gráfico de contorno simple con etiquetas, la colocación de etiquetas de contorno manualmente, la configuración de los colores de los contornos, la especificación manual de los colores de los contornos y el uso de un mapa de colores para especificar los colores de los contornos.