Gráfico de histograma Seaborn

Salman Mehmood 15 febrero 2024
  1. Utilice la función histplot() de Seaborn para trazar el histograma en Python
  2. Agrupar histogramas múltiples con la función FacetGrid() en Seaborn
Gráfico de histograma Seaborn

Este artículo discutirá cómo hacer un histograma con la función histplot() de Seaborn. También examinaremos por qué la función distplot() arroja un error.

Luego aprenderemos a agrupar varias parcelas en Seaborn.

Utilice la función histplot() de Seaborn para trazar el histograma en Python

Si está familiarizado con Seaborn o ha estado siguiendo la documentación, puede saber que la forma anterior de construir un histograma era con el distplot. Todo eso cambió con la última versión de Seaborn.

Ahora verá esta advertencia que le indica que distplot() ha quedado obsoleto y, en su lugar, debe usar histplot() para crear un histograma.

La versión 0.11.2 de Seaborn viene con tres nuevos gráficos de distribución, así que comencemos con los conceptos básicos del nuevo histplot de Seaborn y escribamos algo de código.

Seguiremos adelante e importaremos Seaborn y alias como sb. Solo queríamos recordarte nuevamente que necesitarás trabajar con la versión más reciente de Seaborn para seguir.

Entonces, verifique su versión con el siguiente comando.

import seaborn as sb

sb.__version__

Producción :

'0.11.2'

Ahora vamos a cargar algunos datos de la biblioteca Seaborn. Estos datos son sobre pingüinos.

PG_Data = sb.load_dataset("penguins")
PG_Data.head()

Tenemos varias medidas para diferentes especies de pingüinos.

Gráfico de histograma Seaborn - Salida 1

PG_Data.shape

Tenemos 344 observaciones, pero descartaremos cualquier valor nulo, dejándonos con 333 observaciones.

PG_Data.dropna(inplace=True)
PG_Data.shape

Producción :

(333, 7)

Ahora solo estamos haciendo esto con fines gráficos, así que sigamos adelante y construyamos nuestro gráfico de histograma Seaborn.

Primero, usamos el estilo Seaborn, hacemos referencia a la biblioteca Seaborn y llamamos a sb.histplot().

Entonces, estamos pasando la serie bill_length_mm de penguins. Estamos eligiendo solo una columna de nuestro marco de datos para trazar un histograma.

sb.set_style("whitegrid")
sb.histplot(PG_Data.bill_length_mm)

Gráfico de histograma Seaborn - Salida 2

También hay una forma alternativa de hacer la sintaxis aquí. Podemos pasar el marco de datos completo a este argumento de datos y luego pasar cualquier columna que nos gustaría trazar con el histograma.

sb.histplot(x="bill_length_mm", data=PG_Data)

Gráfico de histograma Seaborn - Salida 3

Podemos crear barras horizontales en lugar de verticales. Podríamos cambiar esto a y en su lugar, produciendo un histograma horizontal.

sb.histplot(y="bill_length_mm", data=PG_Data)

Gráfico de histograma Seaborn - Salida 4

Si está familiarizado con el antiguo distplot marino, sabrá que al usar distplot, se traza un gráfico kde en la parte superior de nuestro histograma, y podemos convertirlo en el nuevo histplot marino.

Vamos a hacer referencia a este argumento kde y hagámoslo igual a True.

sb.histplot(x="bill_length_mm", data=PG_Data, kde=True)

Esto se verá muy similar a lo que produjo Seaborn para la antigua versión distplot. Si no está familiarizado con el gráfico kde, lea aquí.

Gráfico de histograma Seaborn - Salida 5

Utilice histplot() con los argumentos bins, binwidth y binrange

De forma predeterminada, Seaborn intentará decidir cuántos contenedores son apropiados para nuestros datos, pero podemos cambiar usando un argumento llamado contenedores, que acepta un par de cosas diferentes.

Digamos que bins es igual a 30. Esto creará 30 bins separados igualmente espaciados en nuestro rango y mostrará una distribución aproximada.

sb.histplot(x="bill_length_mm", data=PG_Data, bins=30)

Gráfico de histograma Seaborn - Salida 6

Por alguna razón, tiene una ubicación específica donde le gustaría que aparecieran esos contenedores. También podemos pasar una lista donde cada uno de estos números son las ubicaciones de inicio y finalización de los contenedores de histograma.

sb.histplot(x="bill_length_mm", data=PG_Data, bins=[20, 40, 50, 55, 60, 65])

Gráfico de histograma Seaborn - Salida 7

Podemos optar por hacer que nuestros contenedores estén espaciados irregularmente por alguna razón. Dos argumentos que hemos encontrado muy útiles son binwidth y binrange.

En binwidth, podemos configurarlo para que sea cualquier valor que podamos poner; sin embargo, ponemos 10, por lo que se necesitan 10 unidades.

Podemos definir un rango de contenedores utilizando el argumento binrange, y debemos pasar una tupla para iniciar y detener los valores.

sb.histplot(x="bill_length_mm", data=PG_Data, binwidth=10, binrange=(30, 60))

Gráfico de histograma Seaborn - Salida 8

Agrupar histogramas múltiples con la función FacetGrid() en Seaborn

Ahora estamos hablando de la función Seaborn FacetGrid(). Es la columna vertebral de su catplot, relplot y displot.

Podemos agrupar el gráfico usando la función FacetGrid(), y la idea principal detrás de FacetGrid es que crearemos pequeños múltiplos.

Esto significa que seleccionaremos una característica categórica en nuestros datos y luego crearemos un gráfico para cada categoría, y podremos hacer todo esto con solo unas pocas líneas de código. Por ejemplo, la cuota de mercado de las empresas A, B y C nos permite comparar tendencias en diferentes categorías.

Gráfico de histograma Seaborn - Ejemplo

Saltemos al código. Veremos algunos datos sobre los pingüinos como vimos anteriormente.

Ahora crearemos nuestro FacetGrid. Para hacer eso, hacemos referencia a la biblioteca Seaborn y luego escribimos la función FacetGrid(), y también necesitamos proporcionar el marco de datos de los pingüinos.

Creará ejes x e y en blanco listos para poner algunos datos. Podemos proporcionar una dimensión de fila o columna o ambas.

Digamos que queremos proporcionar esta dimensión de columna y dividir nuestros pequeños múltiplos por la isla en la que viven los pingüinos.

sb.set_style("darkgrid")
sb.FacetGrid(PG_Data, col="island")

Creó tres subparcelas separadas para cada isla porque encontró tres islas.

Gráfico de histograma Seaborn - Salida 9

Ahora que hemos configurado nuestro FacetGrid, podemos pasar al paso dos, que consiste en mapear algunas parcelas en estos ejes. Llamamos a la función map(), y dentro de esta función, necesitamos proporcionar la figura que queremos crear.

Creará gráficos de histograma en cada una de estas figuras, y también debemos definir qué columna del marco de datos de los pingüinos nos interesa. Estamos interesados ​​en flipper_length_mm.

FG = sb.FacetGrid(PG_Data, col="island")
FG.map(sb.histplot, "flipper_length_mm")

Agrupa todos los datos por cada isla y luego crea un diagrama de histograma para cada uno de esos grupos. Podemos construir todos esos múltiplos pequeños con solo un par de líneas de código.

Gráfico de histograma Seaborn - Salida 10

El objeto FacetGrid llamado FG también tiene otro método llamado map_dataframe, que es ligeramente diferente pero logra cosas similares al mapa.

FG = sb.FacetGrid(PG_Data, col="island")
FG.map_dataframe(sb.histplot, x="flipper_length_mm")

Gráfico de histograma Seaborn - Salida 11

Hace lo mismo que la función mapa(), pero es ligeramente diferente. Una de las grandes diferencias aquí es que map_dataframe() permite argumentos variables. Entonces, podríamos definir x igual a flipper_length_mm, o podemos definir y.

FG = sb.FacetGrid(PG_Data, col="island")
FG.map_dataframe(sb.histplot, y="flipper_length_mm")

Trazará un histplot horizontal.

Gráfico de histograma Seaborn - Salida 12

Lea las otras cosas relacionadas con el histplot de aquí.

Código completo:

# In[1]:

import seaborn as sb

# In[2]:

sb.__version__

# In[3]:

PG_Data = sb.load_dataset("penguins")

# In[4]:

PG_Data.head()

# In[5]:

PG_Data.shape

# In[6]:

PG_Data.dropna(inplace=True)

# In[7]:

PG_Data.shape

# In[8]:

sb.set_style("whitegrid")
sb.histplot(PG_Data.bill_length_mm)

# In[9]:

sb.histplot(x="bill_length_mm", data=PG_Data)

# In[10]:

sb.histplot(y="bill_length_mm", data=PG_Data)


# In[11]:

sb.histplot(x="bill_length_mm", data=PG_Data, kde=True)

# In[12]:

sb.histplot(x="bill_length_mm", data=PG_Data, bins=30)

# In[13]:

sb.histplot(x="bill_length_mm", data=PG_Data, bins=[20, 40, 50, 55, 60, 65])

# In[14]:

sb.histplot(x="bill_length_mm", data=PG_Data, binwidth=10, binrange=(30, 60))

# ##### FacetGrid

# In[15]:

sb.set_style("darkgrid")
FG = sb.FacetGrid(PG_Data, col="island")

# In[16]:

FG = sb.FacetGrid(PG_Data, col="island")
FG.map(sb.histplot, "flipper_length_mm")

# In[17]:

FG = sb.FacetGrid(PG_Data, col="island")
FG.map_dataframe(sb.histplot, x="flipper_length_mm")

# In[18]:

FG = sb.FacetGrid(PG_Data, col="island")
FG.map_dataframe(sb.histplot, y="flipper_length_mm")
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

Artículo relacionado - Seaborn Plot