Cuadrícula de múltiples parcelas en Seaborn

Requisitos previos: Matplotlib , Seaborn

En este artículo, veremos datos de gráficos multidimensionales. Es un enfoque útil para dibujar varias instancias del mismo gráfico en diferentes subconjuntos de su conjunto de datos. Permite a un espectador extraer rápidamente una gran cantidad de información sobre un conjunto de datos complejo. En Seaborn, trazaremos múltiples gráficos en una sola ventana de dos maneras. Primero con la ayuda de la función Facetgrid() y otro implícito con la ayuda de matplotlib.

FacetGrid: FacetGrid es una forma general de trazar cuadrículas basadas en una función. Ayuda a visualizar la distribución de una variable, así como la relación entre múltiples variables. Su objeto utiliza el marco de datos como entrada y los nombres de las variables que dan forma a las dimensiones de columna, fila o color de la cuadrícula, la sintaxis se proporciona a continuación:

Sintaxis: seaborn.FacetGrid(datos, \*\*kwargs)

  • datos: marco de datos ordenado donde cada columna es una variable y cada fila es una observación.
  • \*\*kwargs: utiliza muchos argumentos como entrada, por ejemplo, fila, columna, tono, paleta, etc.

A continuación se muestra la implementación del método anterior:

Importe todas las bibliotecas de Python necesarias

Python3

import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

Ejemplo 1: aquí, estamos inicializando la cuadrícula de esta manera, configura la figura y los ejes de matplotlib, pero no dibuja nada en ellos, estamos usando el conjunto de datos de ejercicio, que es un conjunto de datos bien conocido disponible como un conjunto de datos incorporado en seaborn. 
El uso básico de la clase es muy similar a FacetGrid. Primero inicializa la cuadrícula, luego pasa la función de trazado a un método de mapa y se llamará en cada subparcela.

Python3

# loading of a dataframe from seaborn
exercise = sns.load_dataset("exercise")
 
# Form a facetgrid using columns
sea = sns.FacetGrid(exercise, col = "time")

Producción:

Ejemplo 2: Esta función dibujará la figura y anotará los ejes. Para hacer un gráfico relacional, primero, inicializa la cuadrícula, luego pasa la función de trazado a un método de mapa y se llamará en cada subgráfico.

Python3

# Form a facetgrid using columns with a hue
sea = sns.FacetGrid(exercise, col = "time", hue = "kind")
   
# map the above form facetgrid with some attributes  
sea.map(sns.scatterplot, "pulse", "time", alpha = .8)
 
# adding legend
sea.add_legend()

Producción:

Ejemplo 3: hay varias opciones para controlar el aspecto de la cuadrícula que se pueden pasar al constructor de clases.

Python3

sea = sns.FacetGrid(exercise, row = "diet",
                    col = "time", margin_titles = True)
 
sea.map(sns.regplot, "id", "pulse", color = ".3",
        fit_reg = False, x_jitter = .1)

Producción:

Ejemplo 4: El tamaño de la figura se establece proporcionando la altura de cada faceta, junto con la relación de aspecto:

Python3

sea = sns.FacetGrid(exercise, col = "time",
                    height = 4, aspect  =.5)
 
sea.map(sns.barplot, "diet", "pulse",
        order = ["no fat", "low fat"])

Producción:

Ejemplo 5: el orden predeterminado de las facetas se deriva de la información del DataFrame. Si la variable utilizada para definir las facetas es de tipo categórico, se utiliza el orden de las categorías. De lo contrario, las facetas estarán en el orden de aparición de los niveles de categoría. Sin embargo, es posible especificar un orden de cualquier dimensión de faceta con el parámetro *_order apropiado:

Python3

exercise_kind = exercise.kind.value_counts().index
sea = sns.FacetGrid(exercise, row = "kind",
                    row_order = exercise_kind,
                    height = 1.7, aspect = 4)
 
sea.map(sns.kdeplot, "id")

Producción:

Ejemplo 6: si tiene muchos niveles de una variable, puede trazarla a lo largo de las columnas pero «envolverlas» para que abarquen varias filas. Al hacer esto, no puede usar una variable de fila.

Python3

g = sns.PairGrid(exercise)
g.map_diag(sns.histplot)
g.map_offdiag(sns.scatterplot)

Producción:

Ejemplo 7:

En este ejemplo, veremos que también podemos trazar una cuadrícula de múltiples parcelas con la ayuda de la función pairplot().

Python3

# importing packages
import seaborn
import matplotlib.pyplot as plt
 
# loading dataset using seaborn
df = seaborn.load_dataset('tips')
 
# pairplot with hue sex
seaborn.pairplot(df, hue ='size')
plt.show()

Producción

Método 2: implícito con la ayuda de matplotlib.

En esto aprenderemos a crear subparcelas usando n.

Importe todas las bibliotecas de Python necesarias

Python3

import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
 
# Setting seaborn as default style even
# if use only matplotlib
sns.set()

Ejemplo 1: aquí, estamos inicializando la cuadrícula sin argumentos, devuelve una figura y un solo eje, que podemos desempaquetar usando la siguiente sintaxis.

Python3

figure, axes = plt.subplots()
figure.suptitle('Geeksforgeeks - one axes with no data')

Producción:

Ejemplo 2: En este ejemplo, creamos un gráfico con 1 fila y 2 columnas, todavía no se pasan datos, es decir, nrows y ncols. Si se da en este orden, no necesitamos escribir los nombres de los argumentos, solo sus valores. 

  • figsize establece la dimensión total de nuestra figura.
  • sharex y sharey se utilizan para compartir uno o ambos ejes entre los gráficos.

Python3

figure, axes = plt.subplots(1, 2, sharex=True, figsize=(10,5))
figure.suptitle('Geeksforgeeks')
axes[0].set_title('first chart with no data')
axes[1].set_title('second chart with no data')

Producción:

Ejemplo 3: Si tienes muchos niveles 

Python3

figure, axes = plt.subplots(3, 4, sharex=True, figsize=(16,8))
figure.suptitle('Geeksforgeeks - 3 x 4 axes with no data')

Producción

Ejemplo 4: aquí, estamos inicializando la figura y los ejes de matplotlib. En este ejemplo, estamos pasando los datos requeridos con la ayuda del conjunto de datos del ejercicio, que es un conjunto de datos bien conocido disponible como un conjunto de datos incorporado en Seaborn. Al usar este método, puede trazar cualquier número de la cuadrícula de múltiples parcelas y cualquier estilo de gráfico mediante filas y columnas implícitas con la ayuda de matplotlib en seaborn. Estamos usando sns.boxplot aquí, donde necesitamos establecer el argumento con el elemento correspondiente de la variable de ejes.

Python3

import seaborn as sns
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
 
 
fig, axes = plt.subplots(2, 3, figsize=(18, 10))
 
fig.suptitle('Geeksforgeeks - 2 x 3 axes Box plot with data')
 
iris = sns.load_dataset("iris")
 
sns.boxplot(ax=axes[0, 0], data=iris, x='species', y='petal_width')
sns.boxplot(ax=axes[0, 1], data=iris, x='species', y='petal_length')
sns.boxplot(ax=axes[0, 2], data=iris, x='species', y='sepal_width')
sns.boxplot(ax=axes[1, 0], data=iris, x='species', y='sepal_length')
sns.boxplot(ax=axes[1, 1], data=iris, x='species', y='petal_width')
sns.boxplot(ax=axes[1, 2], data=iris, x='species', y='petal_length')

Producción:

Ejemplo 5: gridspec() es para una cuadrícula de filas y columnas con un espacio de ancho y alto especificado. El objeto plt.GridSpec no crea un gráfico por sí mismo, sino que es simplemente una interfaz conveniente que es reconocida por el comando subplot().

Python3

import matplotlib.pyplot as plt
 
Grid_plot = plt.GridSpec(2, 3, wspace = 0.8,
                         hspace = 0.6)
 
plt.subplot(Grid_plot[0, 0])
plt.subplot(Grid_plot[0, 1:])
plt.subplot(Grid_plot[1, :2])
plt.subplot(Grid_plot[1, 2])

Producción:

Ejemplo 6: aquí crearemos una cuadrícula de subtrama de 3×4 usando subtramas(), donde todos los ejes en la misma fila comparten su escala del eje y, y todos los ejes en la misma columna comparten su escala del eje x.

Python3

import matplotlib.pyplot as plt
 
figure, axes = plt.subplots(3, 4,
                            figsize = (15, 10))
 
figure.suptitle('Geeksforgeeks - 2 x 3 axes grid plot using subplots')

Producción:

Publicación traducida automáticamente

Artículo escrito por kumar_satyam y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *