我最近在闪闪发光的仪表板上添加了一个高图,可以对单张地图中的特定多边形进行点击做出反应。
取决于单击的多边形,高图的数据是从1个数据帧中获取的,还是从2个数据帧的组合中获取的。
这有效。但是,我还有一个“地图重置”按钮,用于重置在地图上单击的多边形。我正在尝试对其进行编码,因此此重置按钮也可以重置高图。
但是,到目前为止,我尝试过的所有选项都从一开始就产生了一个空白的高位图表,并且没有变化。
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,])
}
})
我尝试将reset按钮添加到eventreactive中,如下所示:
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函数将通过不绘制数据来对此做出反应。但是,从启动有光泽的应用程序开始,它就使高图保持空白!
任何帮助将不胜感激!
答案 0 :(得分:0)
我解决了自己的问题:
首先添加一个包含click_shape事件的反应值
value<- reactiveValues(click_shape = NULL)
,然后添加第二个观察事件,以修改click_shape
observeEvent(input$reset, {
value$click_shape <- NULL
})
原始observeEvent旁边的
observeEvent(input$map_shape_click, {
value$click_shape <- input$map_shape_click$id
})
这样,两个观察事件可以修改click_shape事件。