¿Cómo hacer histogramas superpuestos en Python con Altair?

Prerrequisito: Altair

Un histograma representa los datos proporcionados durante una especie de grupos. Es un método preciso para la representación gráfica de la distribución de datos numéricos. Es una especie de gráfico de barras en el que el eje X representa los rangos de bin, mientras que el eje Y proporciona información sobre la frecuencia.

Usando Altair, podemos hacer histogramas superpuestos o histogramas de capas a partir de datos que están en forma amplia o en forma ordenada larga.

Procedimiento

Esto será común a ambas formas:

  • Importar bibliotecas
  • Importar o crear datos.
  • Haga que los datos sean largos/anchos según el método.
  • Trazar los histogramas.

Método 1: forma ordenada

  • Para hacer un histograma con Altair, estamos usando la función mark_area(). Aquí especificamos el nivel de transparencia con el argumento de opacidad y, por lo tanto, el argumento clave que crea el histograma es interpolar = ‘paso’. Sin eso, el histograma aparecería como un gráfico de áreas de Altair.
  • Luego especificamos las variables y por lo tanto el número de bins. Para diferenciar entre diferentes gráficos, se emplea alt.Color() con la variable específica como múltiples histogramas.

Ejemplo :

Python3

# importing libraries
import pandas as pd
import altair as alt
import numpy as np
  
  
np.random.seed(42)
  
# creating data
df = pd.DataFrame({'Col A': np.random.normal(-1, 1, 1000),
                   'Col B': np.random.normal(0, 1, 1000)})
  
# Overlapping Histograms
alt.Chart(pd.melt(df,
                  id_vars=df.index.name,
                  value_vars=df.columns,
                  var_name='Columns',
                  value_name='Values')
          ).mark_area(opacity=0.5,
                      interpolate='step'
                      ).encode(
    alt.X('Values', bin=alt.Bin(maxbins=10)),
    alt.Y('count()', stack=None),
    alt.Color('Columns')
).add_selection(alt.selection_interval(encodings=['x']))

Producción:

Método 2: formato ancho

  • A menudo, es posible que comience con datos que están en formato amplio. Altair tiene la función transform_fold() que convertirá los datos en formato ancho a formato largo y ordenado. Esto nos permite no usar la función melt() de Pandas y nos permite transferir la información dentro de Altair.
  • Especificamos los nombres de las variables que se requieren para remodelar y los nombres para la marca que abarcan nuevas variables dentro de los datos ordenados.

Ejemplo :

Python3

# importing libraries
import pandas as pd
import altair as alt
import numpy as np
  
  
np.random.seed(42)
  
# creating data
df = pd.DataFrame({'Col 1': np.random.normal(-1, 1, 1000),
                   'Col 2': np.random.normal(0, 1, 1000)})
  
# Overlapping Histograms
alt.Chart(df).transform_fold(
    ['Col 1', 'Col 2'],
    as_=['Columns', 'Values']
).mark_area(
    opacity=0.5,
    interpolate='step'
).encode(
    alt.X('Values:Q', bin=alt.Bin(maxbins=100)),
    alt.Y('count()', stack=None),
    alt.Color('Columns:N')
)

Producción :

Publicación traducida automáticamente

Artículo escrito por deepanshu_rustagi 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 *