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()
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()
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()
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.
Deja una respuesta