Etiquetado de contornos personalizados en Matplotlib

Beginner

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

Introducción

En este tutorial, aprenderemos cómo crear etiquetas de contorno en Matplotlib. Las etiquetas de contorno se utilizan para etiquetar los contornos en un gráfico de contorno. Este tutorial cubrirá algunas técnicas avanzadas para crear etiquetas de contorno personalizadas.

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.

Definimos nuestra superficie

Comenzaremos definiendo nuestra superficie utilizando numpy y matplotlib. Esto nos dará un conjunto de datos con el que trabajar.

import matplotlib.pyplot as plt
import numpy as np

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

Crea etiquetas de contorno con formatters de nivel personalizados

Ahora crearemos etiquetas de contorno con formatters de nivel personalizados. Esto nos permitirá formatear las etiquetas de una manera específica. En este caso, eliminaremos los ceros finales y agregaremos un signo de porcentaje.

def fmt(x):
    s = f"{x:.1f}"
    if s.endswith("0"):
        s = f"{x:.0f}"
    return rf"{s} \%" if plt.rcParams["text.usetex"] else f"{s} %"

fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z)
ax.clabel(CS, CS.levels, inline=True, fmt=fmt, fontsize=10)

Etiqueta los contornos con cadenas arbitrarias usando un diccionario

También podemos etiquetar los contornos con cadenas arbitrarias usando un diccionario. Esto nos permitirá etiquetar los contornos con etiquetas personalizadas. En este ejemplo, usaremos una lista de cadenas para etiquetar los contornos.

fig1, ax1 = plt.subplots()
CS1 = ax1.contour(X, Y, Z)

fmt = {}
strs = ['first','second', 'third', 'fourth', 'fifth','sixth','seventh']
for l, s in zip(CS1.levels, strs):
    fmt[l] = s

ax1.clabel(CS1, CS1.levels[::2], inline=True, fmt=fmt, fontsize=10)

Utiliza un Formateador

También podemos utilizar un formateador para formatear las etiquetas de contorno. Esto nos permitirá formatear las etiquetas de una manera específica. En este ejemplo, usaremos un LogFormatterMathtext para formatear las etiquetas.

fig2, ax2 = plt.subplots()
CS2 = ax2.contour(X, Y, 100**Z, locator=plt.LogLocator())
fmt = ticker.LogFormatterMathtext()
fmt.create_dummy_axis()
ax2.clabel(CS2, CS2.levels, fmt=fmt)
ax2.set_title("$100^Z$")

plt.show()

Resumen

En este tutorial, aprendimos cómo crear etiquetas de contorno en Matplotlib. Cubrimos algunas técnicas avanzadas para crear etiquetas de contorno personalizadas, incluyendo formatters de nivel personalizados, etiquetar contornos con cadenas arbitrarias y usar un formateador para formatear las etiquetas de contorno. Estas técnicas pueden ser útiles para crear visualizaciones que sean informativas y estéticamente atractivas.