Colocación de espinas 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

En Matplotlib, se puede ajustar la posición de las espinas de los ejes para personalizar la apariencia de una gráfica. Esta práctica te guiará a través del proceso de ajustar las posiciones de las espinas en Matplotlib.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haz 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 tengas 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 tienes problemas durante el aprendizaje, no dudes en preguntar a Labby. Proporciona retroalimentación después de la sesión y resolveremos rápidamente el problema para ti.

Importar las bibliotecas necesarias

En este paso, importaremos las bibliotecas necesarias para crear nuestras gráficas.

import matplotlib.pyplot as plt
import numpy as np

Crear una gráfica básica

En este paso, crearemos una gráfica básica para demostrar las diferentes opciones de colocación de las espinas en Matplotlib.

x = np.linspace(0, 2*np.pi, 100)
y = 2 * np.sin(x)

fig, ax_dict = plt.subplot_mosaic(
    [['center', 'zero'],
     ['axes', 'data']]
)
fig.suptitle('Spine positions')

ax = ax_dict['center']
ax.set_title("'center'")
ax.plot(x, y)
ax.spines[['left', 'bottom']].set_position('center')
ax.spines[['top', 'right']].set_visible(False)

ax = ax_dict['zero']
ax.set_title("'zero'")
ax.plot(x, y)
ax.spines[['left', 'bottom']].set_position('zero')
ax.spines[['top', 'right']].set_visible(False)

ax = ax_dict['axes']
ax.set_title("'axes' (0.2, 0.2)")
ax.plot(x, y)
ax.spines.left.set_position(('axes', 0.2))
ax.spines.bottom.set_position(('axes', 0.2))
ax.spines[['top', 'right']].set_visible(False)

ax = ax_dict['data']
ax.set_title("'data' (1, 2)")
ax.plot(x, y)
ax.spines.left.set_position(('data', 1))
ax.spines.bottom.set_position(('data', 2))
ax.spines[['top', 'right']].set_visible(False)

Definir un método para ajustar las ubicaciones de las espinas

En este paso, definiremos un método que ajuste la ubicación de las espinas de los ejes basado en las ubicaciones de espinas especificadas.

def adjust_spines(ax, spines):
    """
    Ajusta la ubicación de las espinas de los ejes basado en las ubicaciones de espinas especificadas.

    Parámetros:
        ax (Axes): El objeto Axes de Matplotlib para el cual se ajustarán las espinas.
        spines (lista de str): Las ubicaciones de espinas deseadas. Las opciones válidas son 'left', 'right', 'top', 'bottom'.

    Devuelve:
        Ninguno
    """
    for loc, spine in ax.spines.items():
        if loc in spines:
            spine.set_position(('outward', 10))  ## mueve la espina hacia afuera 10 puntos
        else:
            spine.set_color('none')  ## no dibuja la espina

    ## desactiva las marcas donde no hay espina
    if 'left' in spines:
        ax.yaxis.set_ticks_position('left')
    else:
        ax.yaxis.set_ticks([])

    if 'bottom' in spines:
        ax.xaxis.set_ticks_position('bottom')
    else:
        ax.xaxis.set_ticks([])

Crear una gráfica usando el método adjust_spines

En este paso, crearemos una gráfica usando el método adjust_spines para demostrar cómo ajustar las ubicaciones de las espinas.

fig = plt.figure()

x = np.linspace(0, 2 * np.pi, 100)
y = 2 * np.sin(x)

ax = fig.add_subplot(2, 2, 1)
ax.plot(x, y, clip_on=False)
adjust_spines(ax, ['left'])

ax = fig.add_subplot(2, 2, 2)
ax.plot(x, y, clip_on=False)
adjust_spines(ax, [])

ax = fig.add_subplot(2, 2, 3)
ax.plot(x, y, clip_on=False)
adjust_spines(ax, ['left', 'bottom'])

ax = fig.add_subplot(2, 2, 4)
ax.plot(x, y, clip_on=False)
adjust_spines(ax, ['bottom'])

plt.show()

Resumen

En este laboratorio, aprendimos cómo ajustar las posiciones de las espinas en Matplotlib estableciendo la posición de las espinas de los ejes con el método set_position, y cómo definir un método para ajustar las ubicaciones de las espinas basado en las ubicaciones de espinas deseadas. Esto puede ser útil para personalizar la apariencia de las gráficas y resaltar características específicas.