如何在图表上使用handle_click来过滤值?

时间:2016-08-22 14:28:12

标签: r shiny

我正在尝试使用ggvis条形图来过滤闪亮的值(就好像它是一个复选框输入)。我可以通过点击图表中的任何一个条来选择我想要的复选框,但是我无法通过再次点击同一个栏来取消选择它们。

我尝试编写if语句(已注释)但复选框保持闪烁,因为barValue()进入并且无限循环。我怀疑这个问题是由tblCar()的反应性引起的,但我不确定如何进一步移动...也许我应该将tblCar放在观察中?

ui.R

library(shiny)


a <- row.names(mtcars)
names(a) <- row.names(mtcars)
as.list(a)
shinyUI(fluidPage(

  # Application title
  titlePanel("Old Faithful Geyser Data"),

  # Sidebar with a slider input for number of bins
  sidebarLayout(
    sidebarPanel(



      checkboxGroupInput("carModel", label = h3("Checkbox group"), 
                         choices = as.list(a),
                         selected = 1)
    ),

    # Show a plot of the generated distribution
    mainPanel(
      ggvisOutput('countBar'),
      tableOutput('tblCar')
    )
  )
))

取消选择的if语句已被注释掉。

server.R

    library(shiny)

shinyServer(function(input, output) {

  barValue <- function(data, location, session, ...) {
    data$stack_lwr_ <- NULL
   # if (data$x_ %in% input$carModel) {
   #    return( updateCheckboxGroupInput(session,'carModel',selected = input$carModel[! input$carModel %in% data$x_ ]) )
   #   } else {
    print(paste(data$x_))
    updateCheckboxGroupInput(session,'carModel',selected = c(data$x_,input$carModel))
   #}

  }

  output$value <- renderPrint({ input$checkGroup })

  #barchart-menu
  tbl_df(mtcars) %>% mutate(cars=row.names(mtcars)) %>% 
    ggvis(~cars, ~mpg) %>% layer_bars()  %>% 
    handle_click(barValue) %>% 
    bind_shiny('countBar', 'ui_countBar')


  tblCar <- reactive({
    req(input$carModel)
      tbl_df(mtcars) %>% mutate(cars=row.names(mtcars)) %>% 
          filter(cars %in% input$carModel)
  })


  output$tblCar <- renderTable({
           tblCar()      
              })

})

global.R

library(ggvis)
library(dplyr)

0 个答案:

没有答案