Python

Cómo crear gráficos múltiples en Seaborn

Los gráficos múltiples, también conocidos por su nombre en inglés subplots, son una forma efectiva para mostrar múltiples visualizaciones de datos en una misma figura. Permitiendo ver al mismo tiempo más de un tipo de dato o tendencia. La mayoría de las bibliotecas de visualización de datos incluye funciones y métodos para esto, lo que no es una excepción en el caso de Seaborn. En esta entrada, se verá cómo se pueden crear gráficos múltiples en Seaborn para disponer de múltiples visualizaciones de una única figura.

Importación de datos de ejemplo: iris

Antes de poder crear un gráfico es necesario importar un conjunto de datos. Para hacer más fácil el seguimiento de los ejemplos se va a utilizar uno de los conjuntos de datos que se incluyen en la instalación de Seaborn, el conjunto de datos iris. Un conjunto de datos que contiene las mediciones en centímetros de la longitud y ancho de los pétalos y sépalos de 150 flores de tres especies diferentes. La importación se puede hacer, después de haber importado Seaborn, con la función load_dataset().

import seaborn as sns

# Cargar los datos de ejemplo de Seaborn
iris = sns.load_dataset("iris")

Creación de gráficos múltiples en Seaborn

Seaborn está basado en Matplotlib, por lo que se pueden usar las herramientas de esta para la creación de gráficos múltiples. La función subplots() de Matplotlib permite crear figuras con varios ejes, uno para cada una de los gráficos. Una vez creada la figura y los ejes, solamente se debe llamar a las funciones de Seaborn con un parámetro que indique en qué eje se debe crear la gráfica.

A la hora de crear una figura con varias gráficas con la función subplots() de Matplotlib es necesario tener en cuenta dos parámetros: nrows, con el que se indica el número de filas que tendrá la figura, y ncols, con el que se indica el número de columnas. La función devuelve dos parámetros, el primero hace referencia a la figura y el segundo es una lista con los diferentes ejes. En la segunda variable, el primer eje hace referencia a posición en las filas y el segundo a la columna. Teniendo esto en mente se puede crear una figura con cuatro gráficas con el siguiente ejemplo.

import matplotlib.pyplot as plt

# Crear una figura y ejes para los subplots
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10, 8))

# Crear los subplots utilizando Seaborn
sns.scatterplot(x=iris['sepal_length'], y=iris['sepal_width'], ax=axes[0, 0])
sns.boxplot(x=iris['species'], y=iris['sepal_length'], ax=axes[0, 1])
sns.histplot(iris['petal_length'], ax=axes[1, 0])
sns.kdeplot(iris['petal_width'], ax=axes[1, 1])

# Añadir títulos y etiquetas a los subplots
axes[0, 0].set_title('Scatterplot')
axes[0, 1].set_title('Boxplot')
axes[1, 0].set_title('Histograma')
axes[1, 1].set_title('Kernel Density Estimation')

# Ajustar el espaciado entre los subplots
plt.tight_layout()

# Mostrar los subplots
plt.show()
Gráficos múltiples en Seaborn distribuidos en una matriz de dos por dos

En este caso primero se ha creado una figura con cuatro ejes mediante la función subplots() de Matplotlib. Indicando que esta figura tenga dos filas de ejes (nrows), dos columnas de ejes (ncols) y el tamaño de la figura sea de 5 por 8 (figsize). Posteriormente se han creado cuatro gráficas diferentes y cada una de ellas se ha dibujado en un eje diferente, el cual se ha indicado a las funciones mediante la propiedad ax. Para lo que se han usado funciones de visualización de Seaborn, como scatterplot(), boxplot(), histplot() y kdeplot(). Sin olvidar agregar los títulos mediante la propiedad set_title() de cada uno de los ejes. Finalmente se ajusta el espacio entre los gráficos múltiples y se muestra la gráfica.

Gráficos múltiples verticales con Seaborn

Al llamar a la función subplots() de Matplotlib, en el caso de que no se indique el número de columnas mediante la propiedad ncols, o este sea uno, los ejes se distribuirán de forma vertical. Por lo que no se tendrá una matriz de ejes, sino que un vector. Por ejemplo, se puede ver cómo se crea una figura con dos gráficos mediante el siguiente código.

# Crear una figura y ejes para los subplots
fig, axes = plt.subplots(nrows=2, figsize=(5, 8))

# Crear los subplots utilizando Seaborn
sns.scatterplot(x=iris['sepal_length'], y=iris['sepal_width'], ax=axes[0])
sns.boxplot(x=iris['species'], y=iris['sepal_length'], ax=axes[1])

# Añadir títulos y etiquetas a los subplots
axes[0].set_title('Scatterplot')
axes[1].set_title('Boxplot')

# Ajustar el espaciado entre los subplots
plt.tight_layout()

# Mostrar los subplots
plt.show()
Gráficos múltiples en Seaborn distribuidos en vector vertical de dos elementos

Nótese que, como se ha comentado antes, la variable axis ya no contiene una matriz, sino que un vector. Por lo que si se intentase usar el valor axes[0, 0] ser producirá un error en tiempo de ejecución.

Gráficos múltiples horizontales con Seaborn

# Crear una figura y ejes para los subplots
fig, axes = plt.subplots(ncols=2, figsize=(10, 4))

# Crear los subplots utilizando Seaborn
sns.scatterplot(x=iris['sepal_length'], y=iris['sepal_width'], ax=axes[0])
sns.boxplot(x=iris['species'], y=iris['sepal_length'], ax=axes[1])

# Añadir títulos y etiquetas a los subplots
axes[0].set_title('Scatterplot')
axes[1].set_title('Boxplot')

# Ajustar el espaciado entre los subplots
plt.tight_layout()

# Mostrar los subplots
plt.show()
Gráficos múltiples en Seaborn distribuidos en vector horizontal de dos elementos

De forma análoga al caso anterior, si no se indica el número de filas este será uno. En el siguiente código se puede ver cómo crear gráficos múltiples con una distribución vertical.

Conclusiones

La creación de gráficos múltiples en Seaborn permite organizar y presentar las visualizaciones de manera clara y eficiente. Pudiéndose combinar diferentes tipos de gráficos en una misma figura. Algo que facilita la comprensión de los patrones y las relaciones existentes en los conjuntos de datos.

Es necesario tener en cuenta que usar demasiadas gráficas en una figura puede ser contraproducente. Ya que el tamaño de cada una de las gráficas es menor, pudiendo evitar que se vean claramente los patrones que se desean mostrar. Siempre, al crear gráficos múltiples, es necesario evaluar si no es una mejor opción crear varias figuras en lugar de una sola.

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez
Tags: Seaborn

Recent Posts

Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

En la era del dato, las organizaciones se enfrentan al reto de gestionar volúmenes masivos…

2 días ago

Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)

En la serie Creación de una API REST con Express y TypeScript construimos una API…

4 días ago

Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte

Durante la Segunda Guerra Mundial, la Fuerza Aérea de Estados Unidos quería reforzar sus aviones…

1 semana ago

Cómo abrir una ventana de Chrome con tamaño y posición específicos desde la línea de comandos en Windows

En muchas situaciones —ya sea para grabar un tutorial, tomar capturas de pantalla profesionales, probar…

2 semanas ago

La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento

Imagínate en una sala con un grupo de personas, por ejemplo, en una oficina, un…

2 semanas ago

Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)

En el trabajo diario con ordenadores, es común encontrarse con tareas repetitivas: realizar copias de…

3 semanas ago

This website uses cookies.