@@ -5,10 +5,11 @@ library(tidyverse)
5
5
library(leaflet )
6
6
library(shinydashboard )
7
7
library(htmltools )
8
+ library(leafpop )
8
9
9
10
10
11
source(paste0(getwd(), " /model/generate_data.R" ))
11
-
12
+ source(paste0(getwd(), " /model/generate_ccaa_data.R " ))
12
13
13
14
# # John Hopkins data ----
14
15
@@ -61,7 +62,7 @@ cvirus_longer <- cvirus_longer %>%
61
62
filter(casos > 0 )
62
63
63
64
64
- # Mapa con el último dato ----
65
+ # # Mapa global con el último dato ----
65
66
66
67
# # TODO Create interaactive with days since filter(casos >= input$ncasos)
67
68
res <- cvirus_longer %> %
@@ -82,8 +83,11 @@ res <- cvirus_longer %>%
82
83
recuperados_prev_day = lag(recuperados , n = 1 , default = 0 ),
83
84
recuperados_nuevos = recuperados - recuperados_prev_day ,
84
85
fallecidos_prev_day = lag(fallecidos , n = 1 , default = 0 ),
85
- fallecidos_nuevos = fallecidos - fallecidos_prev_day ,
86
-
86
+ fallecidos_nuevos = fallecidos - fallecidos_prev_day ,
87
+ recuperados_i_relativo_x100 = round(100 * recuperados_nuevos / recuperados_prev_day ,1 ),
88
+ casos_i_relativo_x100 = round(100 * casos_nuevos / casos_prev_day ,1 ),
89
+ recuperados_i_relativo_x100 = round(100 * recuperados_nuevos / recuperados_prev_day ,1 ),
90
+ fallecidos_i_relativo_x100 = round(100 * fallecidos_nuevos / fallecidos_prev_day ,1 )
87
91
) %> %
88
92
filter(casos > = 100 ) %> %
89
93
mutate(
@@ -102,55 +106,286 @@ cvirus_map_data <- res %>%
102
106
fallecidos = sum(fallecidos )) %> %
103
107
ungroup()
104
108
105
- # # TODO try to change to highcharter and conver to interactive shiny
106
-
109
+ var_global_list <- c( " casos " , " recuperados " , " fallecidos " , " casos_nuevos " ,
110
+ " recuperados_nuevos " , " fallecidos_nuevos " )
107
111
108
- p_subs <- map(cvirus_map_data $ pais , function (pais_select ) {
109
- df <- res %> %
110
- filter(pais == pais_select )
111
- p <- df %> %
112
- ggplot( aes(x = dia_since_100 , y = casos_nuevos , group = 1 ))
113
- p +
114
- geom_point(size = rel(1.5 )) +
115
- geom_line() +
116
- # geom_smooth() +
117
- # scale_y_continuous(limits = c(0,max(res$casos_nuevos)+100))+
118
- ggtitle(" Coronavirus: new daily cases" ) +
119
- theme_bw() +
120
- labs(title = paste0(" Coronavirus: new daily cases in " , pais_select ))
121
- })
112
+ # # TODO try to change to highcharter and conver to interactive shiny
122
113
123
- names(p_subs ) <- cvirus_map_data $ pais
114
+ #
115
+ # p_subs_fallecidos <- map(cvirus_map_data$pais, function(pais_select) {
116
+ # df <- res %>%
117
+ # filter(pais== pais_select)
118
+ # p_glob <- df %>%
119
+ # ggplot( aes(x = dia_since_100, y = fallecidos_nuevos, group = 1))
120
+ # p_glob <- p_glob +
121
+ # geom_point(size = rel(1.5)) +
122
+ # geom_line() +
123
+ # # geom_smooth() +
124
+ # # scale_y_continuous(limits = c(0,max(res$casos_nuevos)+100))+
125
+ # theme_bw() +
126
+ # labs(title = "Coronavirus: Nuevos fallecidos por día ",
127
+ # subtitle = pais_select, x = "Días desde el caso 100")
128
+ # return(p_glob)
129
+ # })
130
+ #
131
+ # names(p_subs_fallecidos) <- cvirus_map_data$pais
132
+ #
133
+ # p_subs_casos <- map(cvirus_map_data$pais, function(pais_select) {
134
+ # df_casos <- res %>%
135
+ # filter(pais== pais_select)
136
+ # p_casos <- df_casos %>%
137
+ # ggplot( aes(x = dia_since_100, y = casos_nuevos, group = 1))
138
+ # p_casos <- p_casos +
139
+ # geom_point(size = rel(1.5)) +
140
+ # geom_line() +
141
+ # # geom_smooth() +
142
+ # # scale_y_continuous(limits = c(0,max(res$casos_nuevos)+100))+
143
+ # theme_bw() +
144
+ # labs(title = "Coronavirus: Nuevos casos por día ",
145
+ # subtitle = pais_select, x = "Días desde el caso 100")
146
+ # return(p_casos)
147
+ # })
148
+ #
149
+ # names(p_subs_casos) <- paste0("casos_",cvirus_map_data$pais)
124
150
125
151
# p_subs <- p_subs[1:13]
126
152
127
- pal <- colorNumeric(
128
- palette = " Reds" ,
129
- domain = c(- 1 , log(max(cvirus_map_data $ fallecidos + 1 )))
130
- )
131
-
132
153
cvirus_map_data $ labs <- map_chr(seq(nrow(cvirus_map_data )), function (i ) {
133
154
paste0( ' <p>' , cvirus_map_data [i , " pais" ], ' <p></p>' ,
134
155
" Casos: " ,cvirus_map_data [i , " casos" ], ' <p></p>' ,
135
156
" Recuperados: " ,cvirus_map_data [i , " recuperados" ],' </p><p>' ,
136
- " Fallecidos: " ,cvirus_map_data [i , " fallecidos" ], ' </p>' )
157
+ " Fallecidos: " ,cvirus_map_data [i , " fallecidos" ], ' </p><p>' ,
158
+ " Fallecidos, inc relativo : " ,cvirus_map_data [i , " fallecidos_i_relativo_x100" ], ' %</p><p>' ,
159
+ " Recuperados, inc relativo : " ,cvirus_map_data [i , " recuperados_i_relativo_x100" ], ' %</p>'
160
+
161
+ )
137
162
})
138
163
139
- # cvirus_map_data$labs <- map(seq(nrow(cvirus_map_data)),
140
- # function(i){
141
- # HTML(cvirus_map_data[i, "labs"] )
142
- # } )
164
+ pal <- colorNumeric(
165
+ palette = " Oranges " ,
166
+ domain = c( - 1 , log( 1e6 ) )
167
+ )
143
168
144
- mapa <-
145
- leaflet(cvirus_map_data ) %> %
169
+ mapa_global_leaf <- leaflet(cvirus_map_data ) %> %
146
170
# addProviderTiles('CartoDB.Positron') %>%
147
171
addProviderTiles(" Stamen.Toner" ) %> %
148
172
addCircleMarkers(
149
- group = " pais" ,
173
+ group = " Casos" ,
174
+ lng = ~ Long ,
175
+ lat = ~ Lat ,
176
+ label = lapply(cvirus_map_data $ labs , htmltools :: HTML ),
177
+ radius = ~ 3 * log( casos + 1 ) ,
178
+ color = ~ pal(log( casos + 1 ) )
179
+ ) %> %
180
+ addCircleMarkers(
181
+ group = " Casos nuevos hoy" ,
182
+ lng = ~ Long ,
183
+ lat = ~ Lat ,
184
+ label = lapply(cvirus_map_data $ labs , htmltools :: HTML ),
185
+ radius = ~ 3 * log( casos_nuevos + 1 ) ,
186
+ color = ~ pal(log( casos_nuevos + 1 ) )
187
+ ) %> %
188
+
189
+ addCircleMarkers(
190
+ group = " Fallecidos" ,
191
+ # layerId = "capa1",
150
192
lng = ~ Long ,
151
193
lat = ~ Lat ,
152
194
label = lapply(cvirus_map_data $ labs , htmltools :: HTML ),
153
195
radius = ~ 3 * log( fallecidos + 1 ) ,
154
196
color = ~ pal(log( fallecidos + 1 ) )
155
197
) %> %
156
- addPopupGraphs(p_subs , group = " pais" )
198
+
199
+ addCircleMarkers(
200
+ group = " Fallecidos nuevos hoy" ,
201
+ # layerId = "capa1",
202
+ lng = ~ Long ,
203
+ lat = ~ Lat ,
204
+ label = lapply(cvirus_map_data $ labs , htmltools :: HTML ),
205
+ radius = ~ 3 * log( fallecidos_nuevos + 1 ) ,
206
+ color = ~ pal(log( fallecidos_nuevos + 1 ) )
207
+ ) %> %
208
+
209
+ addCircleMarkers(
210
+ group = " Recuperados" ,
211
+ # layerId = "capa1",
212
+ lng = ~ Long ,
213
+ lat = ~ Lat ,
214
+ label = lapply(cvirus_map_data $ labs , htmltools :: HTML ),
215
+ radius = ~ 3 * log( recuperados + 1 ) ,
216
+ color = ~ pal(log( recuperados + 1 ) )
217
+ ) %> %
218
+ addCircleMarkers(
219
+ group = " Recuperados nuevos hoy" ,
220
+ # layerId = "capa1",
221
+ lng = ~ Long ,
222
+ lat = ~ Lat ,
223
+ label = lapply(cvirus_map_data $ labs , htmltools :: HTML ),
224
+ radius = ~ 3 * log( recuperados_nuevos + 1 ) ,
225
+ color = ~ pal(log( recuperados_nuevos + 1 ) )
226
+ ) %> %
227
+
228
+
229
+ # Layers control
230
+ addLayersControl(
231
+ baseGroups = c(" Casos" , " Casos nuevos hoy" , " Fallecidos" ," Fallecidos nuevos hoy" ,
232
+ " Recuperados" ," Recuperados nuevos hoy" ),
233
+ # overlayGroups = c("Quakes", "Outline"),
234
+ options = layersControlOptions(collapsed = FALSE )
235
+ )
236
+
237
+
238
+
239
+
240
+
241
+ # # Load ccaa data from datadista github ----
242
+
243
+
244
+ ccaa_casos <- read_csv(" https://raw.githubusercontent.com/datadista/datasets/master/COVID%2019/ccaa_covid19_casos.csv" )
245
+
246
+ ccaa_altas <- read_csv(" https://raw.githubusercontent.com/datadista/datasets/master/COVID%2019/ccaa_covid19_altas.csv" )
247
+
248
+ ccaa_fallecidos <- read_csv(" https://raw.githubusercontent.com/datadista/datasets/master/COVID%2019/ccaa_covid19_fallecidos.csv" )
249
+
250
+ ccaa_uci <- read_csv(" https://raw.githubusercontent.com/datadista/datasets/master/COVID%2019/ccaa_covid19_uci.csv" )
251
+
252
+
253
+ ccaa_casos_longer <- ccaa_casos %> %
254
+ pivot_longer(
255
+ cols = 3 : ncol(ccaa_casos ),
256
+ values_to = " casos"
257
+ ) %> %
258
+ rename(" fecha" = " name" )
259
+
260
+ ccaa_altas_longer <- ccaa_altas %> %
261
+ pivot_longer(
262
+ cols = 3 : ncol(ccaa_altas ),
263
+ values_to = " altas"
264
+ ) %> %
265
+ rename(" fecha" = " name" )
266
+
267
+ ccaa_fallecidos_longer <- ccaa_fallecidos %> %
268
+ pivot_longer(
269
+ cols = 3 : ncol(ccaa_fallecidos ),
270
+ values_to = " fallecidos"
271
+ ) %> %
272
+ rename(" fecha" = " name" )
273
+
274
+ ccaa_uci_longer <- ccaa_uci %> %
275
+ pivot_longer(
276
+ cols = 3 : ncol(ccaa_uci ),
277
+ values_to = " ingresos_uci"
278
+ ) %> %
279
+ rename(" fecha" = " name" )
280
+
281
+
282
+ ccaa_longer <- ccaa_casos_longer %> %
283
+ left_join(ccaa_altas_longer %> %
284
+ select(- CCAA ),
285
+ by = c(" cod_ine" , " fecha" )) %> %
286
+ left_join(ccaa_fallecidos_longer %> %
287
+ select(- CCAA ),
288
+ by = c(" cod_ine" , " fecha" )) %> %
289
+ left_join(ccaa_uci_longer %> %
290
+ select(- CCAA ),
291
+ by = c(" cod_ine" , " fecha" ))
292
+ ccaa_longer $ fecha <- as.Date(as.character(ccaa_longer $ fecha ), format = " %d/%m/%y" )
293
+
294
+ # # Mapa ccaa ----
295
+
296
+ mapa_ccaa <- readRDS(" data/mapa_ccaa.rds" )
297
+
298
+
299
+ ccaa_data_subplots <- ccaa_longer %> %
300
+ group_by(cod_ine , CCAA , fecha ) %> %
301
+ arrange(fecha ) %> %
302
+ summarise(
303
+ casos = sum(casos ),
304
+ recuperados = sum(altas ),
305
+ fallecidos = sum(fallecidos ),
306
+ ingresos_uci = sum(ingresos_uci )
307
+ ) %> %
308
+ mutate(
309
+ casos_prev_day = lag(casos , n = 1 , default = 0 ),
310
+ casos_nuevos = casos - casos_prev_day ,
311
+ recuperados_prev_day = lag(recuperados , n = 1 , default = 0 ),
312
+ recuperados_nuevos = recuperados - recuperados_prev_day ,
313
+ fallecidos_prev_day = lag(fallecidos , n = 1 , default = 0 ),
314
+ fallecidos_nuevos = fallecidos - fallecidos_prev_day ,
315
+ ingresos_uci_prev_day = lag(ingresos_uci , n = 1 , default = 0 ),
316
+ ingresos_uci_nuevos = ingresos_uci - ingresos_uci_prev_day
317
+ ) %> %
318
+ filter(casos > = 1 ) %> %
319
+ mutate(
320
+ casos_nuevos = if_else(casos_nuevos == 0 ,
321
+ lag(casos_nuevos , 1 ),
322
+ casos_nuevos ),
323
+ dia_since_1 = row_number()
324
+ )
325
+
326
+
327
+ ccaa_map_data <- ccaa_data_subplots %> %
328
+ filter(CCAA != " Total" ) %> %
329
+ group_by(cod_ine , CCAA ) %> %
330
+ filter(fecha == max(fecha )) %> %
331
+ mutate(casos = sum(casos ),
332
+ recuperados = sum(recuperados ),
333
+ fallecidos = sum(fallecidos ),
334
+ ingresos_uci = sum(ingresos_uci , na.rm = TRUE )
335
+ ) %> %
336
+ ungroup()
337
+
338
+
339
+
340
+
341
+ # # subplots in two leaflet is problematic
342
+
343
+ # p_ccaa_subs <- map(ccaa_map_data$CCAA, function(cod_select) {
344
+ # df_spain <- ccaa_data_subplots %>%
345
+ # filter(CCAA == cod_select)
346
+ # p_spain <- df_spain %>%
347
+ # ggplot( aes(x = dia_since_1, y = casos_nuevos, group = 1))
348
+ # p_spain <- p_spain +
349
+ # geom_point(size = rel(1.5)) +
350
+ # geom_line() +
351
+ # # geom_smooth() +
352
+ # # scale_y_continuous(limits = c(0,max(res$casos_nuevos)+100))+
353
+ # ggtitle("Coronavirus: new daily cases in ") +
354
+ # theme_bw() +
355
+ # labs(title = paste0("Coronavirus: new daily cases in ", cod_select ))
356
+ # return(p_spain)
357
+ # })
358
+ #
359
+ # names(p_ccaa_subs) <- ccaa_map_data$CCAA
360
+
361
+ # p_subs <- p_subs[1:13]
362
+
363
+
364
+
365
+ ccaa_map_data $ labs <- map_chr(seq(nrow(ccaa_map_data )), function (i ) {
366
+ paste0( ' <p>' , ccaa_map_data [i , " CCAA" ], ' <p></p>' ,
367
+ " Casos: " , ccaa_map_data [i , " casos" ], ' <p></p>' ,
368
+ " Recuperados: " ,ccaa_map_data [i , " recuperados" ],' </p><p>' ,
369
+ " Fallecidos: " ,ccaa_map_data [i , " fallecidos" ], ' </p><p>' ,
370
+ " Ingresos UCI: " ,ccaa_map_data [i , " ingresos_uci" ], ' </p>' )
371
+ })
372
+
373
+
374
+ # # TODO . interactive to select input
375
+
376
+
377
+
378
+ mapa_ccaa <- mapa_ccaa %> %
379
+ inner_join(ccaa_map_data , by = c(" Codigo" = " cod_ine" ) )
380
+
381
+
382
+ mapa_ccaa_leaflet <-
383
+ leaflet(mapa_ccaa ) %> %
384
+ addProviderTiles(" Stamen.Toner" ) %> %
385
+ addPolygons(color = " #444444" , weight = 1 , smoothFactor = 0.5 ,
386
+ group = " CCAA" ,
387
+ opacity = 1.0 , fillOpacity = 0.5 ,
388
+ fillColor = ~ colorNumeric(" Reds" , ingresos_uci )(ingresos_uci ),
389
+ label = lapply(mapa_ccaa $ labs , htmltools :: HTML ),
390
+ highlightOptions = highlightOptions(color = " white" , weight = 2 ,
391
+ bringToFront = TRUE ))
0 commit comments