Cambiar la dirección del eje en Matplotlib

Beginner

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

Introducción

En este laboratorio, aprenderá a cambiar la dirección del eje en un gráfico de Matplotlib utilizando el método set_axis_direction(). Este método le permite cambiar la dirección de un eje a cualquiera de las cuatro direcciones cardinales: arriba, abajo, izquierda o derecha.

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 bibliotecas

Primero, necesitamos importar las bibliotecas necesarias para este laboratorio. Vamos a utilizar numpy y matplotlib.

import matplotlib.pyplot as plt
import numpy as np

Configurando la gráfica

A continuación, definiremos una función setup_axes() que configurará la proyección polar en un rectángulo. Esta función utiliza GridHelperCurveLinear para crear una proyección polar con un rectángulo.

from matplotlib.projections import PolarAxes
from matplotlib.transforms import Affine2D
import mpl_toolkits.axisartist as axisartist
import mpl_toolkits.axisartist.angle_helper as angle_helper
import mpl_toolkits.axisartist.grid_finder as grid_finder
from mpl_toolkits.axisartist.grid_helper_curvelinear import \
    GridHelperCurveLinear

def setup_axes(fig, rect):
    """Proyección polar, pero en un rectángulo."""
    grid_helper = GridHelperCurveLinear(
        Affine2D().scale(np.pi/180., 1.) + PolarAxes.PolarTransform(),
        extreme_finder=angle_helper.ExtremeFinderCycle(
            20, 20,
            lon_cycle=360, lat_cycle=None,
            lon_minmax=None, lat_minmax=(0, np.inf),
        ),
        grid_locator1=angle_helper.LocatorDMS(12),
        grid_locator2=grid_finder.MaxNLocator(5),
        tick_formatter1=angle_helper.FormatterDMS(),
    )
    ax = fig.add_subplot(
        rect, axes_class=axisartist.Axes, grid_helper=grid_helper,
        aspect=1, xlim=(-5, 12), ylim=(-5, 10))
    ax.axis[:].toggle(ticklabels=False)
    ax.grid(color=".9")
    return ax

Agregando ejes flotantes

Definiremos dos funciones que agregarán ejes flotantes a nuestra gráfica. La primera función add_floating_axis1() agrega un eje flotante a la gráfica con una etiqueta de theta = 30. La segunda función add_floating_axis2() agrega un eje flotante a la gráfica con una etiqueta de r = 6.

def add_floating_axis1(ax):
    ax.axis["lat"] = axis = ax.new_floating_axis(0, 30)
    axis.label.set_text(r"$\theta = 30^{\circ}$")
    axis.label.set_visible(True)
    return axis

def add_floating_axis2(ax):
    ax.axis["lon"] = axis = ax.new_floating_axis(1, 6)
    axis.label.set_text(r"$r = 6$")
    axis.label.set_visible(True)
    return axis

Cambiando la dirección del eje

Ahora, crearemos un bucle para configurar cuatro gráficas diferentes con el eje flotante en cada una de las cuatro direcciones cardinales. En el bucle, usaremos add_floating_axis1() y add_floating_axis2() para agregar los ejes flotantes, y set_axis_direction() para establecer la dirección del eje.

fig = plt.figure(figsize=(8, 4), layout="constrained")

for i, d in enumerate(["bottom", "left", "top", "right"]):
    ax = setup_axes(fig, rect=241+i)
    axis = add_floating_axis1(ax)
    axis.set_axis_direction(d)
    ax.set(title=d)

for i, d in enumerate(["bottom", "left", "top", "right"]):
    ax = setup_axes(fig, rect=245+i)
    axis = add_floating_axis2(ax)
    axis.set_axis_direction(d)
    ax.set(title=d)

plt.show()

Visualizando la gráfica

Finalmente, visualizaremos la gráfica. Podemos ver la misma gráfica con el eje flotante en cada una de las cuatro direcciones cardinales.

Resumen

En este laboratorio, aprendiste cómo cambiar la dirección del eje en una gráfica de Matplotlib utilizando el método set_axis_direction(). Al utilizar este método, puedes cambiar fácilmente la dirección de un eje a cualquiera de las cuatro direcciones cardinales: arriba, abajo, izquierda o derecha.