Tutorial de formateadores de marcas en 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

Matplotlib es una biblioteca de trazado de Python ampliamente utilizada que produce gráficos 2D y 3D de alta calidad. En este laboratorio, aprenderemos cómo usar formatters de marcas en Matplotlib.

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.

Importando Matplotlib y configurando la gráfica

Primero, necesitamos importar la biblioteca Matplotlib y configurar la gráfica. Crearemos una gráfica vacía con un eje y y un eje x. También configuraremos el eje para que solo muestre la espina inferior, estableceremos las posiciones de las marcas y definiremos la longitud de las marcas.

import matplotlib.pyplot as plt
from matplotlib import ticker

def setup(ax, title):
    """Configura los parámetros comunes para los Ejes en el ejemplo."""
    ## solo muestra la espina inferior
    ax.yaxis.set_major_locator(ticker.NullLocator())
    ax.spines[['left', 'right', 'top']].set_visible(False)

    ## define las posiciones de las marcas
    ax.xaxis.set_major_locator(ticker.MultipleLocator(1.00))
    ax.xaxis.set_minor_locator(ticker.MultipleLocator(0.25))

    ax.xaxis.set_ticks_position('bottom')
    ax.tick_params(which='major', width=1.00, length=5)
    ax.tick_params(which='minor', width=0.75, length=2.5, labelsize=10)
    ax.set_xlim(0, 5)
    ax.set_ylim(0, 1)
    ax.text(0.0, 0.2, title, transform=ax.transAxes,
            fontsize=14, fontname='Monospace', color='tab:blue')


fig, ax = plt.subplots(figsize=(8, 2))
setup(ax, "Tick Formatters")

Formateo simple

En este paso, mostraremos cómo usar un formateador simple pasando una cadena o una función a ~.Axis.set_major_formatter o ~.Axis.set_minor_formatter. Crearemos dos gráficas, una usando un formateador de cadena y la otra usando un formateador de función.

fig0, axs0 = plt.subplots(2, 1, figsize=(8, 2))
fig0.suptitle('Formateo simple')

## Una ``str``, usando la sintaxis de la función de cadena de formato, se puede usar directamente como un
## formateador. La variable ``x`` es el valor de la marca y la variable ``pos`` es
## la posición de la marca. Esto crea un StrMethodFormatter automáticamente.
setup(axs0[0], título="'{x} km'")
axs0[0].xaxis.set_major_formatter('{x} km')

## Una función también se puede usar directamente como un formateador. La función debe tomar
## dos argumentos: ``x`` para el valor de la marca y ``pos`` para la posición de la marca,
## y debe devolver una ``str``. Esto crea un FuncFormatter automáticamente.
setup(axs0[1], título="lambda x, pos: str(x-5)")
axs0[1].xaxis.set_major_formatter(lambda x, pos: str(x-5))

fig0.tight_layout()

Formateo de objetos Formatter

En este paso, usaremos objetos .Formatter para formatear las marcas. Crearemos siete gráficas, cada una usando un formateador diferente.

fig1, axs1 = plt.subplots(7, 1, figsize=(8, 6))
fig1.suptitle('Formateo de objetos Formatter')

## Formateador nulo
setup(axs1[0], título="NullFormatter()")
axs1[0].xaxis.set_major_formatter(ticker.NullFormatter())

## Formateador StrMethod
setup(axs1[1], título="StrMethodFormatter('{x:.3f}')")
axs1[1].xaxis.set_major_formatter(ticker.StrMethodFormatter("{x:.3f}"))

## FuncFormatter se puede usar como decorador
@ticker.FuncFormatter
def major_formatter(x, pos):
    return f'[{x:.2f}]'

setup(axs1[2], título='FuncFormatter("[{:.2f}]".format)')
axs1[2].xaxis.set_major_formatter(major_formatter)

## Formateador fijo
setup(axs1[3], título="FixedFormatter(['A', 'B', 'C',...])")
## FixedFormatter solo debe usarse en conjunto con FixedLocator.
## De lo contrario, no se puede estar seguro de dónde terminarán las etiquetas.
positions = [0, 1, 2, 3, 4, 5]
labels = ['A', 'B', 'C', 'D', 'E', 'F']
axs1[3].xaxis.set_major_locator(ticker.FixedLocator(posiciones))
axs1[3].xaxis.set_major_formatter(ticker.FixedFormatter(labels))

## Formateador escalar
setup(axs1[4], título="ScalarFormatter()")
axs1[4].xaxis.set_major_formatter(ticker.ScalarFormatter(useMathText=True))

## Formateador FormatStr
setup(axs1[5], título="FormatStrFormatter('#%d')")
axs1[5].xaxis.set_major_formatter(ticker.FormatStrFormatter("#%d"))

## Formateador porcentual
setup(axs1[6], título="PercentFormatter(xmax=5)")
axs1[6].xaxis.set_major_formatter(ticker.PercentFormatter(xmax=5))

fig1.tight_layout()

Mostrando las gráficas

Finalmente, mostraremos las gráficas usando plt.show().

plt.show()

Resumen

En este laboratorio, aprendimos cómo usar formateadores de marcas en Matplotlib pasando una cadena o una función a ~.Axis.set_major_formatter o ~.Axis.set_minor_formatter, o creando una instancia de una de las diversas clases ~.ticker.Formatter y proporcionándola a ~.Axis.set_major_formatter o ~.Axis.set_minor_formatter. También aprendimos cómo configurar una gráfica con posiciones de marcas, longitud de marcas y un título.