-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathhitos.R
91 lines (81 loc) · 3.39 KB
/
hitos.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
library(readxl)
library(plotly)
library(htmlwidgets)
library(htmltools)
library(dplyr)
# Cargar los datos desde un archivo Excel (reemplaza "datos.xlsx" con tu archivo real)
datos <- read_excel("input_hitos.xlsx")
datos <- datos %>%
mutate(across(everything(), ~ ifelse(is.na(.), "", .)))
# Crear una columna de fecha combinando el año y el mes
datos <- datos %>%
mutate(fecha = as.Date(paste(year, month, "01", sep = "-")))
# Extraer los años únicos para el eje X
anos_unicos <- unique(format(datos$fecha, "%Y"))
# Definir colores personalizados: rojo, azul, verde y amarillo
colores <- c("#2C5530", "#739E82", "#669BBC", "#D38B5D")
# Crear una columna de color para asignar colores a cada tipo
datos <- datos %>%
mutate(color = case_when(
type == "Creación del grupo de Ecoinformática" ~ colores[1],
type == "Primeras Jornadas Ecoinformáticas" ~ colores[2],
type == "Notas ecoinformáticas" ~ colores[3],
type == "Seminarios" ~ colores[4],
TRUE ~ "#000000" # Valor por defecto si no encuentra una coincidencia
),
fecha_formateada = format(fecha, "%b %Y") # Formato para mostrar mes y año
)
# Crear el gráfico interactivo
grafico <- plot_ly() %>%
# Añadir la línea negra (movida hacia abajo)
add_trace(
data = datos,
x = ~fecha,
y = rep(0, nrow(datos)), # Movemos la línea hacia abajo, ajusta el valor para acercarla a los números
type = "scatter",
mode = "lines", # Solo líneas, sin puntos
line = list(color = "black", width = 2),
showlegend = FALSE # Esto evita que la línea aparezca en la leyenda
) %>%
# Añadir los puntos (marcadores) con colores personalizados y quitar la leyenda
add_trace(
data = datos,
x = ~fecha,
y = rep(0, nrow(datos)), # Movemos los puntos hacia abajo, en la misma posición que la línea
type = "scatter",
mode = "markers",
marker = list(size = 10, color = ~color), # Asignamos los colores personalizados aquí
text = ~paste(fecha_formateada, "<br>", type, "<br>", titulo), # Mostramos fecha y tipo
hoverinfo = "text", # Queremos mostrar solo el texto personalizado
customdata = ~link, # Agregar la columna de enlaces a customdata
showlegend = FALSE # Esto elimina la leyenda de los puntos
) %>%
layout(
title = "",
xaxis = list(
title = "",
showgrid = TRUE,
tickangle = 0, # Esto controla el ángulo de los números
tickpadding = 0, # Elimina el espacio entre los números y la línea
tickfont = list(size = 12, family = "Arial", color = "black", y = -10), # Mueve las etiquetas hacia abajo
tickmode = "array", # Modo personalizado para los ticks
tickvals = as.Date(paste(anos_unicos, "01", "01", sep = "-")), # Aseguramos que solo haya un número por año
ticktext = anos_unicos, # Mostramos solo el año
showticklabels = TRUE
),
yaxis = list(title = "", showticklabels = FALSE,
showgrid = FALSE, zeroline = FALSE, range = c(-0.5, 0.5))# Ajustamos el rango del eje Y
) %>%
event_register("plotly_click")
# Agregar funcionalidad de clic para abrir enlaces correctamente
grafico <- onRender(grafico, "
function(el, x) {
el.on('plotly_click', function(data) {
var url = data.points[0].customdata;
if (url) {
window.open(url, '_blank');
}
});
}")
# Guardar como archivo HTML
saveWidget(grafico, "images/clickable_plot_horizontal.html", selfcontained = TRUE)