20/02/2018
Python, con sus potentes librerías como Matplotlib y Seaborn, ofrece versatilidad para crear visualizaciones de datos. Una necesidad común es representar dos conjuntos de datos con diferentes escalas en una misma gráfica, requiriendo la creación de un gráfico con dos ejes y. Este tutorial te guiará paso a paso en el proceso, desde la configuración básica hasta técnicas más avanzadas para personalizar tus gráficos.

- Entendiendo la necesidad de dos ejes y
- El método twinx() en Matplotlib
- Personalizando el gráfico de dos ejes y
- Trabajando con múltiples gráficos y ejes
- Alternativas y librerías adicionales
- Consultas habituales y solución de problemas
- Tabla comparativa de funciones clave
- Lista de pasos para crear una gráfica de dos ejes y
Entendiendo la necesidad de dos ejes y
Utilizar dos ejes y en una gráfica es crucial cuando se trabaja con datos que tienen diferentes magnitudes o unidades. Imaginemos, por ejemplo, representar la temperatura y la humedad a lo largo del tiempo. La temperatura podría oscilar entre 0 y 40 grados Celsius, mientras que la humedad podría variar entre 0% y 100%. Forzar ambos datos en un solo eje y distorsionaría la representación visual de uno de los conjuntos de datos. Un gráfico de dos ejes y permite visualizar ambos con claridad y precisión.
El método twinx() en Matplotlib
Matplotlib, la librería de visualización más popular en Python, proporciona una función sencilla y eficiente para crear gráficos con dos ejes y: twinx()
. Esta función crea un nuevo eje y que comparte el mismo eje x que el eje y original. Esto es fundamental para comparar datos relacionados en función de una misma variable independiente.
Ejemplo básico:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 1)
y1 = x2
y2 = np.exp(x)
fig, ax1 = plt.subplots()
ax2 = axtwinx()
axplot(x, y1, 'g-')
axplot(x, y2, 'b-')
axset_xlabel('X')
axset_ylabel('Y1', color='g')
axset_ylabel('Y2', color='b')
plt.show()
Este código crea una gráfica con dos ejes y. ax1
representa el eje y principal, mientras que ax2 = axtwinx()
crea el segundo eje y, compartiendo el eje x con ax1
. Cada conjunto de datos (y1 e y2) se grafica en su respectivo eje y con diferentes colores. Las etiquetas de los ejes se configuran para una mejor comprensión.
Personalizando el gráfico de dos ejes y
Matplotlib ofrece un amplio abanico de opciones para personalizar la apariencia del gráfico. Se pueden modificar los colores, estilos de línea, etiquetas, límites del eje y, leyendas, y mucho más.
Ajustando los límites del eje y: Los límites de los ejes y se ajustan automáticamente, pero a veces es necesario controlarlos manualmente para optimizar la visualización. Esto se logra mediante las funciones ax.set_ylim()
.
Ejemplo con límites personalizados:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 1)
y1 = x2
y2 = np.exp(x)
fig, ax1 = plt.subplots()
ax2 = axtwinx()
axplot(x, y1, 'g-')
axplot(x, y2, 'b-')
axset_xlabel('X')
axset_ylabel('Y1', color='g')
axset_ylabel('Y2', color='b')
axset_ylim([0, 100])
axset_ylim([0, 10000])
plt.show()
Este ejemplo muestra cómo establecer límites específicos para cada eje y, mejorando la legibilidad del gráfico.
Trabajando con múltiples gráficos y ejes
Para gráficos más complejos con múltiples subplots y ejes y, es recomendable utilizar matplotlib.gridspec
para un control más preciso sobre la disposición de los elementos. gridspec
permite crear una cuadrícula de subplots y asignar cada eje a una celda específica de la cuadrícula.
Alternativas y librerías adicionales
Aunque Matplotlib es la opción más común, otras librerías de visualización como Seaborn ofrecen funcionalidades adicionales para crear gráficos más sofisticados. Seaborn, construido sobre Matplotlib, simplifica la creación de gráficos estadísticos, incluyendo la posibilidad de gestionar múltiples ejes y con una sintaxis más concisa. Sin embargo, para un control fino sobre cada aspecto de la gráfica, Matplotlib sigue siendo la opción preferida.
Consultas habituales y solución de problemas
¿Cómo cambio el color y el estilo de la línea? Se puede modificar el color y el estilo de la línea mediante argumentos adicionales en la función plot()
. Por ejemplo: axplot(x, y1, 'r--')
trazará una línea roja discontinua.
¿Cómo añado una leyenda? Utiliza la función legend()
para agregar una leyenda al gráfico, especificando las etiquetas de cada línea.
¿Cómo cambio el título del gráfico? Utiliza fig.suptitle("Título del gráfico")
para añadir un título general al gráfico.
Tabla comparativa de funciones clave
Función | Descripción |
---|---|
twinx() | Crea un nuevo eje y que comparte el eje x con el eje y existente. |
twiny() | Crea un nuevo eje x que comparte el eje y con el eje x existente. |
set_xlabel() | Establece la etiqueta del eje x. |
set_ylabel() | Establece la etiqueta del eje y. |
set_ylim() | Establece los límites del eje y. |
set_xlim() | Establece los límites del eje x. |
plot() | Dibuja una línea en el gráfico. |
legend() | Añade una leyenda al gráfico. |
title() | Añade un título al gráfico. |
Lista de pasos para crear una gráfica de dos ejes y
- Importar las librerías necesarias:
matplotlib.pyplot
ynumpy
. - Crear una figura y un eje y usando
plt.subplots()
. - Crear un segundo eje y usando
ax.twinx()
. - Graficar los datos en cada eje y usando
plot()
. - Personalizar los ejes y (etiquetas, límites, colores, etc.).
- Añadir una leyenda y un título (opcional).
- Mostrar el gráfico usando
plt.show()
.
Con este tutorial, ahora tienes las herramientas para crear gráficos de dos ejes y en Python, mejorando la eficacia de tus visualizaciones de datos. Recuerda que la práctica y la exploración de las opciones de personalización te permitirán dominar esta técnica y crear gráficos informativos y visualmente atractivos.