¿Cómo hacer Stripplot con Jitter en Altair Python?

Prerrequisitos: Altair

Altair es una biblioteca de visualización de datos estadísticos en Python que se basa en las gramáticas de visualización Vega y Vega-Lite. Se utiliza un Stripplot para el análisis de datos gráficos. Es una gráfica simple de valores de respuesta en un orden ordenado a lo largo de un solo eje. El diagrama de franja consta de 2 ejes distintos (X, Y). Los gráficos de franjas proporcionan una alternativa para el histograma y otros gráficos basados ​​en la densidad y, a menudo, se usan con conjuntos de datos pequeños. 

Se utiliza un diagrama de franja simple para representar los datos como puntos, lo que puede no ser muy útil para nosotros. Para hacer que el diagrama de franjas simple sea más cultivado, agregamos fluctuaciones aleatorias. Jitter en palabras simples es agregar una pequeña cantidad de variabilidad (horizontal o vertical) a los datos para garantizar que todos los puntos de datos sean visibles.

Acercarse:

  • Importar bibliotecas
  • Importar o crear datos
  • Cree un Stripplot simple usando Altair
  • Agregar variable de fluctuación al eje
  • Modifique los valores de diferentes atributos para una mejor visualización (opcional).
  • Gráfico de visualización

Función utilizada

calcule_transform() permite al usuario definir nuevos campos en el conjunto de datos que se calculan a partir de otros campos mediante una expresión.

Sintaxis:

calculate_transform(<some_expression>)

Varias implementaciones utilizando el enfoque anterior se dan a continuación.

Ejemplo 1: 

En este programa, utilizaremos el conjunto de datos de propinas para estudiar la cantidad de dinero pagada como propina durante la hora del almuerzo y la cena.

Python3

#import libraries
import seaborn
import altair as alt
  
  
# Getting data
tip = seaborn.load_dataset('tips')
  
# plotting the stripplot
stripplot = alt.Chart(tip).mark_circle(size=14).encode(
    # X-axis jitter Vertical
    x=alt.X(
        'jitter:Q',
        title=None,
        axis=alt.Axis(ticks=True, grid=False, labels=False),
        scale=alt.Scale(),
    ),
    y=alt.Y('tip:Q',
            scale=alt.Scale()),
    color=alt.Color('time:N', legend=None),
    column=alt.Column(
        'time:N',
    ),
).transform_calculate(
    # Generate Gaussian jitter with a Box-Muller transform
    jitter='sqrt(-2*log(random()))*cos(2*PI*random())')
stripplot

Producción:

Ejemplo 2:

Este programa se ocupa del estudio de la temperatura máxima durante diferentes condiciones climáticas en la región de Seattle utilizando stripplot.

Python3

#import libraries
import altair as alt
from vega_datasets import data
  
# Getting data
weather = data.seattle_weather()
  
# plotting the stripplot
stripplot = alt.Chart(weather).mark_circle(size=14).encode(
    x=alt.X(
        'jitter:Q',
        title=None,
        axis=alt.Axis(ticks=True, grid=False, labels=False),
        scale=alt.Scale(),
    ),
    y=alt.Y('temp_max:Q',
            scale=alt.Scale(
                domain=(-1, 40))),
    color=alt.Color('weather:N', legend=None),
    column=alt.Column(
        'weather:N',
        header=alt.Header(
            labelFontSize=16,
            labelAngle=0,
            titleOrient='top',
            labelOrient='bottom',
            labelAlign='center',
            labelPadding=25,
        ),
    ),
).transform_calculate(
    # Generate Gaussian jitter with a Box-Muller transform
    jitter='sqrt(-2*log(random()))*cos(2*PI*random())'
).configure_facet(
    spacing=0
).configure_view(
    stroke=None
).configure_axis(
    labelFontSize=16,
    titleFontSize=16
).properties(height=400, width=100)
stripplot

Producción:

Ejemplo 3.

Este trazado representa la edad y el sexo de una determinada pieza de datos. (Gráfico horizontal)

Python3

#import libraries
import seaborn
import altair as alt
import pandas as pd
  
# Creating our own data
data = [['Tom', 10, 'Male'], ['Nick', 25, 'Male'], ['Juli', 14, 'Female'],
        ['Sarah', 30, 'Male'], ['Pulkit', 20, 'Male'], ['Ritika', 20, 'Female'],
        ['Sayantan', 60, 'Male'], ['Pam', 39, 'Female'], ['Peter', 42, 'Male'],
        ['Jenefer', 24, 'Female'], ['Tony', 29, 'Female'], ['Myler', 22, 'Female']]
df = pd.DataFrame(data, columns=['Name', 'Age', 'Gender'])
  
# plotting the stripplot Horizontal
horizontal_stripplot = alt.Chart(df, width=600, height=100).mark_circle(size=40).encode(
    y=alt.Y(
        'jitter:Q',
        title=None,
        axis=alt.Axis(ticks=True, grid=False, labels=False),
        scale=alt.Scale(),
    ),
    x=alt.X('Age:Q', scale=alt.Scale()),
    color=alt.Color('Gender:N', legend=None),
    row=alt.Row(
        'Gender:N',
        header=alt.Header(
            labelAngle=0,
            labelFontSize=16,
            titleOrient='top',
            labelOrient='left',
            labelAlign='left',
        ),
    ),
).transform_calculate(
    # Generate Gaussian jitter with a Box-Muller transform
    jitter='sqrt(-2*log(random()))*cos(2*PI*random())'
).configure_facet(
    spacing=0
).configure_view(
    stroke=None
).configure_axis(
    labelFontSize=16,
    titleFontSize=16
)
horizontal_stripplot

Producción:

Publicación traducida automáticamente

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