Treemaps en plotly

Treemaps en plotly con treemap

Un treemap representa una jerarquía como rectángulos anidados, donde el área de cada rectángulo es proporcional a su valor, lo que lo convierte en una alternativa a un gráfico de sectores o un gráfico sunburst para datos de parte de un todo con varios niveles. La forma más sencilla de construir uno con la función treemap de plotly express es describir el names de cada nodo y su parents (una cadena vacía para los nodos de nivel superior).

import plotly.express as px

fig = px.treemap(
    names = ["A", "B", "C", "D", "E", "F", "G"],
    parents = ["", "A", "A", "B", "B", "C", "E"])

fig.show()

Valores

Sin values, cada hoja obtiene el mismo tamaño. Pasa un array a juego con names para dimensionar cada rectángulo según una cantidad real.

import plotly.express as px

fig = px.treemap(
    names = ["A", "B", "C", "D", "E", "F", "G"],
    parents = ["", "A", "A", "B", "B", "C", "E"],
    values = [0, 12, 18, 9, 7, 10, 6])

fig.show()

Colores

Personaliza los colores de relleno con color_discrete_sequence, o mapea una variable numérica a color (junto con color_continuous_scale) para sombrear cada rectángulo según su valor.

import plotly.express as px

fig = px.treemap(
    names = ["A", "B", "C", "D", "E", "F", "G"],
    parents = ["", "A", "A", "B", "B", "C", "E"],
    values = [0, 12, 18, 9, 7, 10, 6],
    color = [0, 12, 18, 9, 7, 10, 6],
    color_continuous_scale = "Blues")

fig.show()

Construir un treemap desde un data frame

Con datos reales, suele ser más fácil describir la jerarquía como una lista de columnas con path (de nivel más externo a más interno) en lugar de construir names y parents a mano.

import plotly.express as px
import pandas as pd

# Datos de ejemplo
df = pd.DataFrame({
    "region": ["Norte", "Norte", "Sur", "Sur"],
    "producto": ["Sillas", "Mesas", "Sillas", "Mesas"],
    "ventas": [45, 30, 25, 20]})

fig = px.treemap(df, path = ["region", "producto"], values = "ventas")

fig.show()

Etiquetas

Controla qué texto se muestra en cada rectángulo con textinfo, por ejemplo para añadir el valor y el porcentaje respecto a su padre.

import plotly.express as px
import pandas as pd

df = pd.DataFrame({
    "region": ["Norte", "Norte", "Sur", "Sur"],
    "producto": ["Sillas", "Mesas", "Sillas", "Mesas"],
    "ventas": [45, 30, 25, 20]})

fig = px.treemap(df, path = ["region", "producto"], values = "ventas")
fig = fig.update_traces(textinfo = "label+value+percent parent")

fig.show()
Storytelling con Datos

Visualización de datos para profesionales

Comprar en Amazon

También te puede interesar