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()
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()
También te puede interesar