Centrar Etiquetas Entre Marcas de Graduación

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 este laboratorio, aprenderemos cómo centrar las etiquetas entre las marcas de graduación en un gráfico de Matplotlib utilizando Python. Por defecto, las etiquetas de las marcas de graduación se alinean con respecto a la marca de graduación asociada, pero no hay forma directa de centrar las etiquetas entre las marcas de graduación. Sin embargo, podemos colocar una etiqueta en las marcas de graduación menores entre las marcas de graduación mayores y ocultar las etiquetas de las marcas de graduación mayores y las marcas de graduación menores para simular este comportamiento. Utilizaremos datos financieros del precio de acciones de Google para demostrar esta técnica.

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.

Cargar los datos financieros

Primero, necesitamos cargar algunos datos financieros del precio de acciones de Google utilizando la función cbook.get_sample_data() de Matplotlib. Utilizaremos los últimos 250 días de datos.

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.cbook as cbook

## Cargar algunos datos financieros; el precio de acciones de Google
r = cbook.get_sample_data('goog.npz')['price_data'].view(np.recarray)
r = r[-250:]  ## obtener los últimos 250 días

Crear el gráfico

A continuación, crearemos el gráfico utilizando la función subplots() de Matplotlib y graficaremos el precio de cierre ajustado de las acciones de Google en el tiempo.

fig, ax = plt.subplots()
ax.plot(r.date, r.adj_close)

Establecer los localizadores y formatos principales y secundarios

Para centrar las etiquetas entre las marcas de graduación, necesitamos establecer los localizadores y formatos principales y secundarios para el eje x. Utilizaremos la función dates.MonthLocator() para establecer los localizadores principales y secundarios en el mes y la función dates.DateFormatter() para formatear las etiquetas de las marcas de graduación menores con la abreviatura del mes.

import matplotlib.dates as dates
import matplotlib.ticker as ticker

ax.xaxis.set_major_locator(dates.MonthLocator())
## 16 es una aproximación leve ya que los meses difieren en el número de días.
ax.xaxis.set_minor_locator(dates.MonthLocator(bymonthday=16))

ax.xaxis.set_major_formatter(ticker.NullFormatter())
ax.xaxis.set_minor_formatter(dates.DateFormatter('%b'))

Quitar las etiquetas de las marcas de graduación principales y las marcas de graduación menores

Para simular el comportamiento de centrar las etiquetas entre las marcas de graduación, necesitamos quitar las etiquetas de las marcas de graduación principales y las marcas de graduación menores y solo mostrar las etiquetas de las marcas de graduación menores. Esto se puede hacer utilizando la función tick_params() y estableciendo los parámetros tick1On y tick2On en False.

## Quitar las líneas de las marcas de graduación
ax.tick_params(axis='x', which='minor', tick1On=False, tick2On=False)

Alinear las etiquetas de las marcas de graduación menores

Finalmente, necesitamos alinear las etiquetas de las marcas de graduación menores al centro entre las marcas de graduación principales. Esto se puede hacer utilizando la función get_xticklabels() y estableciendo el parámetro minor en True para obtener las etiquetas de las marcas de graduación menores. Luego podemos recorrer las etiquetas y establecer la alineación horizontal en 'center'.

## Alinear la etiqueta de la marca de graduación menor
for label in ax.get_xticklabels(minor=True):
    label.set_horizontalalignment('center')
imid = len(r) // 2
ax.set_xlabel(str(r.date[imid].item().year))

Mostrar el gráfico

Ahora podemos mostrar el gráfico utilizando la función show().

plt.show()

Resumen

En este laboratorio, aprendimos cómo centrar etiquetas entre las marcas de graduación en un gráfico de Matplotlib utilizando Python. Utilizamos datos financieros de los precios de acciones de Google para demostrar esta técnica y seguimos los siguientes pasos:

  1. Cargamos los datos financieros
  2. Creamos el gráfico
  3. Establecimos los localizadores y formatos principales y secundarios
  4. Quitamos las etiquetas de las marcas de graduación principales y las marcas de graduación menores
  5. Alineamos las etiquetas de las marcas de graduación menores al centro entre las marcas de graduación principales
  6. Mostramos el gráfico.