Gráfico de mosaico en Python con statsmodels

Datos de ejemplo

Considera los siguientes datos a modo de ejemplo:

import pandas as pd

# Datos
df = pd.DataFrame({
    "genero": ["Hombre", "Hombre", "Hombre", "Hombre",
               "Mujer", "Mujer", "Mujer", "Mujer"],
    "fumador": ["Sí", "Sí", "No", "No",
                "Sí", "No", "No", "No"]})

Gráfico de mosaico con mosaic

Un gráfico de mosaico representa la relación entre dos o más variables categóricas: el área de cada baldosa es proporcional al número de observaciones de esa combinación de categorías. La función mosaic de statsmodels.graphics.mosaicplot lo construye directamente a partir de un data frame de pandas y una lista de las columnas a cruzar.

from statsmodels.graphics.mosaicplot import mosaic

mosaic(df, ["genero", "fumador"])

# plt.show()

Gráfico de mosaico en Python con statsmodels

Colores

Pasa una función a properties: recibe la tupla de categorías de cada baldosa (por ejemplo ("Hombre", "Sí")) y debe devolver un diccionario de propiedades de patch de matplotlib, como color.

from statsmodels.graphics.mosaicplot import mosaic

colores = {"Sí": "#DD8452", "No": "#4C72B0"}

def props(key):
    return {"color": colores[key[1]]}

mosaic(df, ["genero", "fumador"], properties = props)

# plt.show()

Colores de un gráfico de mosaico en Python

Etiquetas

Por defecto cada baldosa se etiqueta con su tupla de categorías. Sobrescríbelo con labelizer, una función que también recibe la tupla de categorías y devuelve el texto a mostrar.

from statsmodels.graphics.mosaicplot import mosaic

def labelizer(key):
    return "/".join(key)

mosaic(df, ["genero", "fumador"], labelizer = labelizer)

# plt.show()

Etiquetas de un gráfico de mosaico en Python

Espacio entre baldosas

Controla la separación entre baldosas con gap, bien un único valor para todas o una lista con un espacio por cada nivel de la primera variable categórica.

from statsmodels.graphics.mosaicplot import mosaic

mosaic(df, ["genero", "fumador"], gap = 0.03)

# plt.show()

Espacio entre baldosas de un gráfico de mosaico en Python

Orientación y título

Fija horizontal = False para invertir el orden de división de las variables categóricas, y pasa title para añadir un título directamente (en lugar de una llamada aparte a plt.title).

from statsmodels.graphics.mosaicplot import mosaic

mosaic(df, ["genero", "fumador"],
      horizontal = False, title = "Hábito de fumar por género")

# plt.show()

Orientación de un gráfico de mosaico en Python

Storytelling con Datos

Visualización de datos para profesionales

Comprar en Amazon

También te puede interesar