Недавно я добавил старшую диаграмму на свою блестящую панель инструментов, которая реагирует на нажатие определенных полигонов на карте листовки.
В зависимости от того, на каком полигоне щелкнули, данные для старшей диаграммы либо берутся из 1 кадра данных, либокомбинация из двух кадров данных.
Это работает.Тем не менее, у меня также есть кнопка «Сброс карты», которая сбрасывает многоугольники, которые были нажаты на карте.Я пытаюсь закодировать его, чтобы эта кнопка сброса также сбрасывала старшую диаграмму.
Однако все варианты, которые я пробовал до сих пор, приводят к пустой старшей диаграмме с самого начала, которая не меняется.
df1<- data.frame(location = c(3,4), "2013" = c(900, 100), "2014" = c(700, 600))
df2<- data.frame(location = c(1,2), "2013" = c(1400, 1500),
"2014" = c(1600, 1700), , location1 = c(3,4)))
click_shape <- eventReactive(input$map_shape_click, {
c <- input$map_shape_click$id
return(c)
})
data_for_chart <- reactive({
# if top level polygon, return data from that level
if(is.null(click_shape())) {return(df1[FALSE,])
}else if(click_shape() %in% df1){
c<- tolower(click_shape())
return(df1[df$location == c,] %>% gather(key = "year", value = GHA_N, 2:3))
# if second level, return data from top + second level
}else if(click_shape() %in% df2){
c<- tolower(click_shape())
d<- tolower(df2$location[df2$location == click_shape()])
return(df1[df1$location == d,] %>%
rbind(df2[df2$location == c,]) %>% gather(key = "year", value = GHA_N, 2:3))
# if no appropriate data is found, don't plot
}else{
return(df1[FALSE,])
}
})
Я попытался добавить кнопку сброса к событию реагировать следующим образом:
click_shape <- eventReactive(c(input$map_shape_click,input$reset) {
if(input$map_shape_click) {
c <- input$map_shape_click$id
return(c)
}else{
return(NULL)
})
, думая, что функция data_for_chart отреагирует на это, не отображая данные.Тем не менее, он сохраняет бланк старшей диаграммы с момента запуска блестящего приложения!
Любая помощь будет принята с благодарностью!