library(plotly)
# Datos jerárquicos
labels <- c(
"Reacciones\nQuímicas", # Nivel 0 (raíz)
# Nivel 1
"Reactivos y\nproductos",
"Intercambio\nde energía",
"Rapidez",
"Reversibilidad",
# Nivel 2: Reactivos y productos
"Síntesis\nej: formación del agua\n(H + O)",
"Descomposición\nej: ruptura del peróxido\nde hidrógeno\n(H₂O₂)",
"Desplazamiento\nej: zinc desplaza \nal hidrógeno\n(Zn + HCl)",
"Doble desplazamiento\nej: intercambio iónico\n(NaCl + AgNO₃)",
# Nivel 2: Intercambio de energía
"Exotérmicas\nej: combustión\n(C + O)",
"Endotérmicas\nej: fotosíntesis\n(CO₂ + H₂O)",
# Nivel 2: Rapidez
"Lentas\nej: oxidación del \nhierro\n(Fe + O)",
"Rápidas\nej: explosión\n(reacción súbita)",
# Nivel 2: Reversibilidad
"Reversibles\nej: síntesis del \namoníaco\n(N + H)",
"Irreversibles\nej: combustión\n(C + O)"
)
parents <- c(
"",
"Reacciones\nQuímicas", "Reacciones\nQuímicas", "Reacciones\nQuímicas", "Reacciones\nQuímicas",
"Reactivos y\nproductos", "Reactivos y\nproductos", "Reactivos y\nproductos", "Reactivos y\nproductos",
"Intercambio\nde energía", "Intercambio\nde energía",
"Rapidez", "Rapidez",
"Reversibilidad", "Reversibilidad"
)
# Asignamos valores iguales a las hojas (tipos) y a los padres la suma de sus hijos
values <- c(
14, # Raíz: suma de todas las hojas
4, 2, 2, 2, # Nivel 1: número de hijos
1, 1, 1, 1, # Nivel 2: Reactivos
1, 1, # Nivel 2: Energía
1, 1, # Nivel 2: Rapidez
1, 1 # Nivel 2: Reversibilidad
)
# Colores por nivel
colors <- c(
"#2E86C1", # Raíz: azul
"#28B463", "#28B463", "#28B463", "#28B463", # Nivel 1: verde
"#D35400", "#D35400", "#D35400", "#D35400", # Nivel 2: naranja
"#D35400", "#D35400", # Nivel 2: naranja
"#D35400", "#D35400", # Nivel 2: naranja
"#D35400", "#D35400" # Nivel 2: naranja
)
# Crear diagrama radial
fig <- plot_ly(
type = "sunburst",
labels = labels,
parents = parents,
values = values,
branchvalues = "total",
textinfo = "label",
insidetextorientation = "horizontal",
marker = list(
colors = colors,
line = list(width = 2, color = "white")
),
hoverinfo = "label+percent parent+value",
textfont = list(size = 14, family = "Arial", color = "white"),
hoverlabel = list(bgcolor = "black", font = list(color = "white"))
)
fig <- fig %>% layout(
title = list(
text = "<b>Clasificación de Reacciones Químicas",
font = list(size = 20, family = "Arial"),
x = 0.5,
y = 0.95
),
margin = list(t = 100, b = 20, l = 20, r = 20),
sunburstcolorway = colors,
paper_bgcolor = "#F8F9F9"
)
# Añadir anotación con créditos
fig <- fig %>% add_annotations(
x = 1,
y = -0.05,
text = "Elaborado por: Marcelo Amores Palma",
showarrow = FALSE,
font = list(size = 10, color = "gray50"),
xref = "paper",
yref = "paper",
xanchor = "right"
)
fig