Mover las etiquetas de las marcas del eje X a la parte superior

MatplotlibMatplotlibBeginner
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 tutorial, aprenderemos cómo mover las etiquetas de las marcas del eje x a la parte superior del gráfico utilizando la biblioteca Matplotlib de Python. Por defecto, Matplotlib coloca las etiquetas del eje x en la parte inferior del gráfico. Sin embargo, a veces es posible que queramos colocarlas en la parte superior para una mejor visualización, especialmente cuando se trata de gráficos congestionados o etiquetas largas que pueden solaparse con otros elementos.

Esta técnica es particularmente útil en escenarios de visualización de datos donde es necesario optimizar el uso del espacio y mejorar la legibilidad de los gráficos. Crearemos un gráfico simple y aprenderemos cómo manipular la posición de las etiquetas de las marcas paso a paso.

Consejos para la MV

Después de que la máquina virtual (VM) haya terminado de iniciarse, haz clic en la esquina superior izquierda para cambiar a la pestaña Notebook y acceder a Jupyter Notebook para practicar.

click-notebook

Es posible que debas esperar unos segundos para que Jupyter Notebook termine de cargar. Debido a las limitaciones de Jupyter Notebook, la validación de las operaciones no se puede automatizar.

Si encuentras algún problema durante este tutorial, no dudes en preguntar a Labby. Por favor, brinda comentarios después de la sesión para que podamos abordar rápidamente cualquier problema.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL matplotlib(("Matplotlib")) -.-> matplotlib/BasicConceptsGroup(["Basic Concepts"]) matplotlib(("Matplotlib")) -.-> matplotlib/PlottingDataGroup(["Plotting Data"]) matplotlib(("Matplotlib")) -.-> matplotlib/PlotCustomizationGroup(["Plot Customization"]) matplotlib/BasicConceptsGroup -.-> matplotlib/importing_matplotlib("Importing Matplotlib") matplotlib/BasicConceptsGroup -.-> matplotlib/figures_axes("Understanding Figures and Axes") matplotlib/BasicConceptsGroup -.-> matplotlib/saving_figures("Saving Figures to File") matplotlib/PlottingDataGroup -.-> matplotlib/line_plots("Line Plots") matplotlib/PlottingDataGroup -.-> matplotlib/fill_between("Fill Between Plots") matplotlib/PlotCustomizationGroup -.-> matplotlib/titles_labels("Adding Titles and Labels") matplotlib/PlotCustomizationGroup -.-> matplotlib/axis_ticks("Axis Ticks Customization") matplotlib/PlotCustomizationGroup -.-> matplotlib/text_annotations("Text Annotations") subgraph Lab Skills matplotlib/importing_matplotlib -.-> lab-48991{{"Mover las etiquetas de las marcas del eje X a la parte superior"}} matplotlib/figures_axes -.-> lab-48991{{"Mover las etiquetas de las marcas del eje X a la parte superior"}} matplotlib/saving_figures -.-> lab-48991{{"Mover las etiquetas de las marcas del eje X a la parte superior"}} matplotlib/line_plots -.-> lab-48991{{"Mover las etiquetas de las marcas del eje X a la parte superior"}} matplotlib/fill_between -.-> lab-48991{{"Mover las etiquetas de las marcas del eje X a la parte superior"}} matplotlib/titles_labels -.-> lab-48991{{"Mover las etiquetas de las marcas del eje X a la parte superior"}} matplotlib/axis_ticks -.-> lab-48991{{"Mover las etiquetas de las marcas del eje X a la parte superior"}} matplotlib/text_annotations -.-> lab-48991{{"Mover las etiquetas de las marcas del eje X a la parte superior"}} end

Comprender Matplotlib y crear un cuaderno (notebook)

En este primer paso, aprenderemos sobre Matplotlib y crearemos un nuevo cuaderno (Jupyter notebook) para nuestra tarea de visualización.

¿Qué es Matplotlib?

Matplotlib es una biblioteca integral para crear visualizaciones estáticas, animadas e interactivas en Python. Proporciona una interfaz de programación de aplicaciones (API) orientada a objetos para incrustar gráficos en aplicaciones y es ampliamente utilizada para la visualización de datos por científicos, ingenieros y analistas de datos.

Crear un nuevo cuaderno (notebook)

En la primera celda de tu cuaderno, importemos la biblioteca Matplotlib. Escribe el siguiente código y ejecuta la celda presionando Shift+Enter:

import matplotlib.pyplot as plt
import numpy as np

## Check the Matplotlib version
print(f"NumPy version: {np.__version__}")
libraries-imported

Cuando ejecutes este código, deberías ver una salida similar a la siguiente:

NumPy version: 2.0.0

El número exacto de la versión puede variar dependiendo de tu entorno.

Ahora tenemos Matplotlib importado y listo para usar. plt es un alias convencional utilizado para el módulo pyplot, que proporciona una interfaz similar a MATLAB para crear gráficos.

Crear un gráfico básico con configuraciones predeterminadas

Ahora que hemos importado Matplotlib, creemos un gráfico simple con configuraciones predeterminadas para entender cómo se posicionan los ejes y las etiquetas de las marcas por defecto.

Comprender los componentes de Matplotlib

En Matplotlib, los gráficos constan de varios componentes:

  • Figura (Figure): El contenedor general del gráfico.
  • Ejes (Axes): El área donde se representa los datos con su propio sistema de coordenadas.
  • Eje (Axis): Los objetos similares a una recta numérica que definen el sistema de coordenadas.
  • Marcas (Ticks): Las marcas en los ejes que indican valores específicos.
  • Etiquetas de las marcas (Tick Labels): Las etiquetas de texto que indican el valor en cada marca.

Por defecto, las etiquetas de las marcas del eje x aparecen en la parte inferior del gráfico.

Crear un gráfico simple

En una nueva celda de tu cuaderno, creemos un gráfico de línea simple:

## Create a figure and a set of axes
fig, ax = plt.subplots(figsize=(8, 5))

## Generate some data
x = np.arange(0, 10, 1)
y = np.sin(x)

## Plot the data
ax.plot(x, y, marker='o', linestyle='-', color='blue', label='sin(x)')

## Add a title and labels
ax.set_title('A Simple Sine Wave Plot')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis (sin(x))')

## Add a grid and legend
ax.grid(True, linestyle='--', alpha=0.7)
ax.legend()

## Display the plot
plt.show()

print("Notice that the x-axis tick labels are at the bottom of the plot by default.")

Cuando ejecutes este código, verás un gráfico de onda sinusoidal con las etiquetas de las marcas del eje x en la parte inferior del gráfico, que es la posición predeterminada en Matplotlib.

Tómate un momento para observar cómo está estructurado el gráfico y dónde se encuentran las etiquetas de las marcas. Esta comprensión nos ayudará a valorar los cambios que realizaremos en el siguiente paso.

Mover las etiquetas de las marcas del eje X a la parte superior

Ahora que comprendemos la posición predeterminada de las etiquetas de las marcas, movamos las etiquetas de las marcas del eje x a la parte superior del gráfico.

Comprender los parámetros de las marcas (Ticks)

Matplotlib proporciona el método tick_params() para controlar la apariencia de las marcas (ticks) y las etiquetas de las marcas. Este método nos permite:

  • Mostrar/ocultar las marcas y las etiquetas de las marcas.
  • Cambiar su posición (arriba, abajo, izquierda, derecha).
  • Ajustar su tamaño, color y otras propiedades.

Crear un gráfico con las etiquetas de las marcas del eje X en la parte superior

Creemos un nuevo gráfico con las etiquetas de las marcas del eje x movidas a la parte superior:

## Create a new figure and a set of axes
fig, ax = plt.subplots(figsize=(8, 5))

## Generate some data
x = np.arange(0, 10, 1)
y = np.cos(x)

## Plot the data
ax.plot(x, y, marker='s', linestyle='-', color='green', label='cos(x)')

## Move the x-axis tick labels to the top
ax.tick_params(
    axis='x',         ## Apply changes to the x-axis
    top=True,         ## Show ticks on the top side
    labeltop=True,    ## Show tick labels on the top side
    bottom=False,     ## Hide ticks on the bottom side
    labelbottom=False ## Hide tick labels on the bottom side
)

## Add a title and labels
ax.set_title('Cosine Wave with X-Axis Tick Labels at the Top')
ax.set_xlabel('X-axis (now at the top!)')
ax.set_ylabel('Y-axis (cos(x))')

## Add a grid and legend
ax.grid(True, linestyle='--', alpha=0.7)
ax.legend()

## Display the plot
plt.show()

print("Now the x-axis tick labels are at the top of the plot!")

Cuando ejecutes este código, verás un gráfico de onda cosenoidal con las etiquetas de las marcas del eje x en la parte superior del gráfico.

Observa cómo se utiliza el método tick_params() con varios parámetros:

  • axis='x': Especifica que queremos modificar el eje x.
  • top=True y labeltop=True: Hace que las marcas y las etiquetas sean visibles en la parte superior.
  • bottom=False y labelbottom=False: Oculta las marcas y las etiquetas en la parte inferior.

Esto nos da una vista clara de los datos con las etiquetas del eje x posicionadas en la parte superior en lugar de en la parte inferior.

Personalizar aún más el gráfico

Ahora que hemos movido las etiquetas de las marcas del eje x a la parte superior, personalicemos aún más nuestro gráfico para que sea más atractivo visualmente e informativo.

Técnicas avanzadas de personalización de gráficos

Matplotlib ofrece numerosas opciones para personalizar gráficos. Exploremos algunas de estas opciones:

## Create a new figure and a set of axes
fig, ax = plt.subplots(figsize=(10, 6))

## Generate some data with more points for a smoother curve
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)

## Plot multiple datasets
ax.plot(x, y1, linewidth=2, color='blue', label='sin(x)')
ax.plot(x, y2, linewidth=2, color='red', label='cos(x)')

## Fill the area between curves
ax.fill_between(x, y1, y2, where=(y1 > y2), alpha=0.3, color='green', interpolate=True)
ax.fill_between(x, y1, y2, where=(y1 <= y2), alpha=0.3, color='purple', interpolate=True)

## Move the x-axis tick labels to the top
ax.tick_params(
    axis='x',
    top=True,
    labeltop=True,
    bottom=False,
    labelbottom=False
)

## Customize tick labels
ax.set_xticks(np.arange(0, 2*np.pi + 0.1, np.pi/2))
ax.set_xticklabels(['0', 'π/2', 'π', '3π/2', '2π'])

## Add title and labels with custom styles
ax.set_title('Sine and Cosine Functions with Customized X-Axis Labels at the Top',
             fontsize=14, fontweight='bold', pad=20)
ax.set_xlabel('Angle (radians)', fontsize=12)
ax.set_ylabel('Function Value', fontsize=12)

## Add a grid and customize its appearance
ax.grid(True, linestyle='--', alpha=0.7, which='both')

## Customize the axis limits
ax.set_ylim(-1.2, 1.2)

## Add a legend with custom location and style
ax.legend(loc='upper right', fontsize=12, framealpha=0.8)

## Add annotations to highlight important points
ax.annotate('Maximum', xy=(np.pi/2, 1), xytext=(np.pi/2, 1.1),
            arrowprops=dict(facecolor='black', shrink=0.05, width=1.5),
            fontsize=10, ha='center')

## Display the plot
plt.tight_layout()  ## Adjust spacing for better appearance
plt.show()

print("We have created a fully customized plot with x-axis tick labels at the top!")

Cuando ejecutes este código, verás un gráfico mucho más elaborado y con aspecto profesional con:

  • Dos curvas (seno y coseno)
  • Regiones coloreadas entre las curvas
  • Etiquetas de marcas personalizadas (utilizando notación de π)
  • Anotaciones que señalan características clave
  • Mejor espaciado y estilo

Observa cómo hemos mantenido las etiquetas de las marcas del eje x en la parte superior utilizando el método tick_params() pero hemos mejorado el gráfico con personalizaciones adicionales.

Comprender las personalizaciones

Desglosemos algunas de las personalizaciones clave que hemos agregado:

  1. fill_between(): Crea regiones coloreadas entre las curvas de seno y coseno.
  2. set_xticks() y set_xticklabels(): Personalizan las posiciones y las etiquetas de las marcas.
  3. tight_layout(): Ajusta automáticamente el espaciado del gráfico para una mejor apariencia.
  4. annotate(): Agrega texto con una flecha que apunta a un punto específico.
  5. Fuentes, colores y estilos personalizados para varios elementos.

Estas personalizaciones demuestran cómo se pueden crear gráficos visualmente atractivos e informativos mientras se mantienen las etiquetas de las marcas del eje x en la parte superior.

Guardar y compartir tu gráfico

El último paso es guardar tu gráfico personalizado para que puedas incluirlo en informes, presentaciones o compartirlo con otros.

Guardar gráficos en diferentes formatos

Matplotlib te permite guardar gráficos en varios formatos, incluyendo PNG, JPG, PDF, SVG y más. Aprendamos cómo guardar nuestro gráfico en diferentes formatos:

## Create a plot similar to our previous customized one
fig, ax = plt.subplots(figsize=(10, 6))

## Generate data
x = np.linspace(0, 2*np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)

## Plot the data
ax.plot(x, y1, linewidth=2, color='blue', label='sin(x)')
ax.plot(x, y2, linewidth=2, color='red', label='cos(x)')

## Move the x-axis tick labels to the top
ax.tick_params(
    axis='x',
    top=True,
    labeltop=True,
    bottom=False,
    labelbottom=False
)

## Customize tick labels
ax.set_xticks(np.arange(0, 2*np.pi + 0.1, np.pi/2))
ax.set_xticklabels(['0', 'π/2', 'π', '3π/2', '2π'])

## Add title and labels
ax.set_title('Plot with X-Axis Labels at the Top', fontsize=14)
ax.set_xlabel('X-axis at the top')
ax.set_ylabel('Y-axis')

## Add grid and legend
ax.grid(True)
ax.legend()

## Save the figure in different formats
plt.savefig('plot_with_top_xlabels.png', dpi=300, bbox_inches='tight')
plt.savefig('plot_with_top_xlabels.pdf', bbox_inches='tight')
plt.savefig('plot_with_top_xlabels.svg', bbox_inches='tight')

## Show the plot
plt.show()

print("The plot has been saved in PNG, PDF, and SVG formats in the current directory.")

Cuando ejecutes este código, el gráfico se guardará en tres formatos diferentes:

  • PNG: Un formato de imagen rasterizado adecuado para la web y uso general.
  • PDF: Un formato vectorial ideal para publicaciones e informes.
  • SVG: Un formato vectorial excelente para la web y gráficos editables.

Los archivos se guardarán en el directorio de trabajo actual de tu cuaderno de Jupyter.

Comprender los parámetros de guardado

Examinemos los parámetros utilizados con savefig():

  • dpi=300: Establece la resolución (puntos por pulgada) para formatos rasterizados como PNG.
  • bbox_inches='tight': Ajusta automáticamente los límites de la figura para incluir todos los elementos sin espacio en blanco innecesario.

Ver los archivos guardados

Puedes ver los archivos guardados navegando al explorador de archivos en Jupyter:

  1. Haz clic en el logotipo de "Jupyter" en la esquina superior izquierda.
  2. En el explorador de archivos, deberías ver los archivos de imagen guardados.
  3. Haz clic en cualquier archivo para verlo o descargarlo.

Opciones adicionales de exportación de gráficos

Para tener más control sobre el gráfico guardado, puedes personalizar el tamaño de la figura, ajustar el fondo o cambiar la resolución (DPI) según tus necesidades:

## Control the background color and transparency
fig.patch.set_facecolor('white')  ## Set figure background color
fig.patch.set_alpha(0.8)          ## Set background transparency

## Save with custom settings
plt.savefig('custom_background_plot.png',
            dpi=400,              ## Higher resolution
            facecolor=fig.get_facecolor(),  ## Use the figure's background color
            edgecolor='none',     ## No edge color
            bbox_inches='tight',  ## Tight layout
            pad_inches=0.1)       ## Add a small padding

print("A customized plot has been saved with specialized export settings.")

Esto demuestra cómo guardar gráficos con un control preciso sobre el formato de salida y la apariencia.

Resumen

En este tutorial, aprendimos cómo mover las etiquetas de las marcas del eje x desde su posición predeterminada en la parte inferior hacia la parte superior del gráfico utilizando Matplotlib. Esta técnica puede ser útil cuando se trabajan con gráficos que tienen etiquetas largas o cuando se necesita optimizar el uso del espacio.

Cubrimos los siguientes puntos clave:

  1. Comprender los conceptos básicos de Matplotlib y sus componentes, incluyendo figuras, ejes y etiquetas de marcas.
  2. Crear gráficos simples con configuraciones predeterminadas para observar la ubicación estándar de las etiquetas de las marcas del eje x.
  3. Utilizar el método tick_params() para mover las etiquetas de las marcas del eje x a la parte superior del gráfico.
  4. Mejorar el gráfico con personalizaciones adicionales para que sea más informativo y atractivo visualmente.
  5. Guardar gráficos en varios formatos para compartirlos y publicarlos.

Este conocimiento te permite crear visualizaciones más legibles y profesionales, especialmente cuando se trabaja con conjuntos de datos complejos o con gráficos que tienen requisitos de diseño específicos.

Para profundizar en tu aprendizaje, podrías explorar otras opciones de personalización de Matplotlib, como:

  • Crear subgráficos con diferentes posiciones de etiquetas de marcas.
  • Personalizar la apariencia de las marcas y las etiquetas de las marcas (color, fuente, tamaño, etc.).
  • Trabajar con diferentes tipos de gráficos, como gráficos de barras, gráficos de dispersión o histogramas con posiciones de marcas personalizadas.

La flexibilidad de Matplotlib permite una amplia personalización para adaptarse a tus necesidades de visualización específicas.