He creado mi Shinyapp (mediante dos archivos ui.R y server.R, ademas de uno global.R.
Localmente la app se abre y funciona correctamente, pero el mapa no se carga y me sale este error:
Me podéis ayudar a solucionarlo? Mi código es:
Codigo server.R
library(shiny)
library(datasets)
library(rsconnect)
library(readr)
library(dplyr)
library(flexdashboard)
library(readxl)
library(tidyverse)
library(stringr)
library(rgdal)
library(rgeos)
library(plotly)
nombr_dep = c("C.Valenciana" = 1
, "Homes/Hombres" = 1
, "Dones/Mujeres" = 1
, "Prov. Alacant/Alicante" = 1
, "Prov. Castelló/Castellón" = 1
, "Prov. València" = 1
)
num_dep = c("C.Valenciana" = 0
, "Homes/Hombres" = 0
, "Dones/Mujeres" = 0
, "Prov. Alacant/Alicante" = 0
, "Prov. Castelló/Castellón" = 0
, "Prov. València" = 0
)
########################## MAPA
Incidencia = tab$Incidencia[5:28]
mapa <- rgdal::readOGR(
paste0(dsn = "./", layer ="departamentos_salud_ogr.json")
)
mapa_departamentos <- fortify(model = mapa, region = "DPTO_KEY")
info_municipios <- mapa@data
mapa_departamentos <- mapa_departamentos %>%
left_join(info_municipios, by = c("id" = "DPTO_KEY"))
info_municipios$INCIDENCIA <- Incidencia
info_municipios$id <- info_municipios$DPTO_KEY
mapa_departamentos <-
left_join(
x = mapa_departamentos,
y = info_municipios,
by = "id"
)
mapa_departamentos$DEPARTAMENTO <- mapa_departamentos$NOMBRE.x
# Se eliminan puntos (se reduce la resolución)
mapa_departamentos <- mapa_departamentos %>%
slice(seq(1, nrow(mapa_departamentos), 5))
# Para etiqueratlo
nombre_departamentos <- info_municipios$NOMBRE
numero_incidencias <- info_municipios$INCIDENCIA
lat <- as.numeric(mapa_departamentos$lat)
long <- as.numeric(mapa_departamentos$long)
datos2 <- data.frame(
"long" = long, "lat" = lat
)
datos1 <- data.frame(
"id" = c(1:24), "Incidencia" = Incidencia
)
#cordenadaa_departamentos$nombre_departamentos <- nombre_departamentos
datos2$id <- as.numeric(mapa_departamentos$DPTOCRC.x)
datos2 <- left_join(
x = datos2,
y = datos1,
by = "id"
)
cordenadaa_departamentos <- coordinates(mapa)
colnames(cordenadaa_departamentos) <- c("long", "lat")
cordenadaa_departamentos <- as.data.frame(cordenadaa_departamentos)
cordenadaa_departamentos$DEPARTAMENTOS <- nombre_departamentos
# Define server logic required to draw a histogram
shinyServer(function(input, output) {
output$mitjana <- flexdashboard::renderGauge({
valor <- tab$Mitjana[nombr_id[input$Zona]]
gauge(valor, min = 0, max = tab$Mitjana[1], gaugeSectors(
success = c(0, tab$Mitjana[1]/10), warning = c(tab$Mitjana[1]/10, tab$Mitjana[1]), danger = c(tab$Mitjana[1]/2, tab$Mitjana[1])
))
})
output$incidencia <- flexdashboard::renderGauge({
valor <- tab$Incidencia[nombr_id[input$Zona]]
gauge(valor, min = 0, max = 250, gaugeSectors(
success = c(0, 50), warning = c(50, 150), danger = c(150, 250)
))
})
output$mitjana14 <- flexdashboard::renderGauge({
valor <- round(tab$Casos_Últims_14_Dies[nombr_id[input$Zona]]/14,3)
gauge(valor, min = 0, max = tab$Casos_Últims_14_Dies[1]/14, gaugeSectors(
success = c(0, tab$Casos_Últims_14_Dies[1]/140), warning = c(tab$Casos_Últims_14_Dies[1]/140, tab$Casos_Últims_14_Dies[1]/28), danger = c(tab$Casos_Últims_14_Dies[1]/28, tab$Casos_Últims_14_Dies[1]/14)
))
})
output$mapa <- renderPlot({
print(input$Zona)
valor = nombr_dep[nombr_id[input$Zona]]
print(valor)
valor2 = num_dep[input$Zona]
print(valor2)
if (valor == 1 ){
mapa_departamentos %>%
ggplot(aes(x = long, y = lat, group = group, fill=INCIDENCIA, Zona = DEPARTAMENTO, texto = INCIDENCIA)) +
geom_polygon(color = "black") +
coord_map("mercator") +
scale_fill_viridis_c() + # Para mas vaierdad de colores
theme_bw() +
theme(
legend.position="bottom",
axis.text.x = element_blank(),
axis.text.y = element_blank(),
axis.ticks = element_blank(),
axis.title = element_blank(),
panel.border = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank()
)
#ggplotly(p, width = 450, height = 700, tooltip = c("Zona", "texto"))
}else {
#mapa_depart <- mapa_departamentos %>% filter(DEPARTAMENTO == valor)
mapa_departamentos %>%
ggplot(aes(x = long, y = lat, group = group, fill=INCIDENCIA, Zona = DEPARTAMENTO, texto = INCIDENCIA)) +
geom_polygon(color = "black") +
geom_polygon(
data = mapa_departamentos %>% filter(DPTOCRC.x == valor2),
aes(x = long, y = lat, group = group),
fill = "gray90",
color = "black") +
geom_polygon(
data = mapa_departamentos %>% filter(DEPARTAMENTO == valor),
aes(x = long, y = lat, group = group),
fill = "firebrick",
alpha = 0.5) +
geom_label(
data = cordenadaa_departamentos %>% filter(DEPARTAMENTOS == valor),
aes(x = long, y = lat, label = tab$Incidencia[nombr_id[input$Zona]]),
inherit.aes = FALSE,
size = 4
) +
coord_map("mercator") +
scale_fill_viridis_c() + # Para mas vaierdad de colores
theme_bw() +
theme(
legend.position="bottom",
axis.text.x = element_blank(),
axis.text.y = element_blank(),
axis.ticks = element_blank(),
axis.title = element_blank(),
panel.border = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank()
)
}
})
output$evolucion <- renderPlot({
btn1 <- input$Zona
btn0 <- "Data diagnòstic laboratori/fecha diagnóstico laboratorio"
ggplot(datos_PDIA,aes(x = datos_PDIA[[btn0]], y = datos_PDIA[[btn1]]))+geom_line()+ scale_x_date()+labs(
x = "Data",
y = "Nombre de casos"
)
})
})
Se que se puede mejorar el código, estoy en proceso.