闪亮的仪表盘高图对两个输入作出反应,不起作用

时间:2018-09-11 19:47:52

标签: r plot shiny leaflet reactive

我最近在闪闪发光的仪表板上添加了一个高图,可以对单张地图中的特定多边形进行点击做出反应。

取决于单击的多边形,高图的​​数据是从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函数将通过不绘制数据来对此做出反应。但是,从启动有光泽的应用程序开始,它就使高图保持空白!

任何帮助将不胜感激!

1 个答案:

答案 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事件。