Skip to content

Commit 463bccd

Browse files
committed
Add ccaa map and changes in world map
1 parent 3d3f0dc commit 463bccd

File tree

8 files changed

+322
-67
lines changed

8 files changed

+322
-67
lines changed

data/mapa_ccaa.rds

554 KB
Binary file not shown.

load_data.R

+270-35
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@ library(tidyverse)
55
library(leaflet)
66
library(shinydashboard)
77
library(htmltools)
8+
library(leafpop)
89

910

1011
source(paste0(getwd(), "/model/generate_data.R"))
11-
12+
source(paste0(getwd(), "/model/generate_ccaa_data.R"))
1213

1314
## John Hopkins data ----
1415

@@ -61,7 +62,7 @@ cvirus_longer <- cvirus_longer %>%
6162
filter(casos>0)
6263

6364

64-
# Mapa con el último dato ----
65+
## Mapa global con el último dato ----
6566

6667
## TODO Create interaactive with days since filter(casos >= input$ncasos)
6768
res <- cvirus_longer %>%
@@ -82,8 +83,11 @@ res <- cvirus_longer %>%
8283
recuperados_prev_day = lag(recuperados, n = 1, default = 0),
8384
recuperados_nuevos = recuperados - recuperados_prev_day,
8485
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)
8791
) %>%
8892
filter(casos >= 100) %>%
8993
mutate(
@@ -102,55 +106,286 @@ cvirus_map_data <- res %>%
102106
fallecidos = sum(fallecidos)) %>%
103107
ungroup()
104108

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")
107111

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
122113

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)
124150

125151
# p_subs <- p_subs[1:13]
126152

127-
pal <- colorNumeric(
128-
palette = "Reds",
129-
domain = c(-1, log(max(cvirus_map_data$fallecidos + 1)))
130-
)
131-
132153
cvirus_map_data$labs <- map_chr(seq(nrow(cvirus_map_data)), function(i) {
133154
paste0( '<p>', cvirus_map_data[i, "pais"], '<p></p>',
134155
"Casos: ",cvirus_map_data[i, "casos"], '<p></p>',
135156
"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+
)
137162
})
138163

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+
)
143168

144-
mapa <-
145-
leaflet(cvirus_map_data) %>%
169+
mapa_global_leaf <- leaflet(cvirus_map_data) %>%
146170
# addProviderTiles('CartoDB.Positron') %>%
147171
addProviderTiles("Stamen.Toner") %>%
148172
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",
150192
lng = ~ Long,
151193
lat = ~ Lat,
152194
label = lapply(cvirus_map_data$labs, htmltools::HTML),
153195
radius = ~ 3 * log( fallecidos + 1 ) ,
154196
color = ~ pal(log( fallecidos + 1 ) )
155197
) %>%
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))

server_dir/map_ccaa_server.R

+7-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@ library(shinydashboard)
22

33

44
output$mapa_ccaa <- renderLeaflet({
5-
## ponermapa ccaa
5+
mapa_ccaa_leaflet
66
})
77

8+
output$max_fecha_ccaa <- renderText({
9+
fecha_max <- ccaa_longer %>%
10+
summarise(fecha = max(fecha)) %>%
11+
pull(fecha)
12+
as.character(fecha_max)
13+
})

server_dir/map_global_server.R

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11

2-
3-
output$mapa_global <- renderLeaflet({
4-
mapa
5-
})
2+
output$mapa_global <- renderLeaflet(mapa_global_leaf)
63

74
output$max_fecha <- renderText({
85
fecha_max <- cvirus_longer %>%

0 commit comments

Comments
 (0)