使用时的反应 ggvis/shiny

Reactivity while using ggvis/shiny

我是 Shiny/ggvis 的新手,我想创建一个散点图,允许用户从 X 和 Y 下拉列表中 select。我多次尝试过此壮举但无济于事,非常感谢您的帮助。请看下面的代码。

library(shiny)
library(ggvis)
library(dplyr)

# Define the user interface

  shinyUI(pageWithSidebar(
    # Add a title to this page

    headerPanel(
      h1("Test the Header Panel!")),


    sidebarPanel(
      uiOutput("ggvis_ui"),
      sliderInput(inputId = "size",label = "Area",10, 1000, value = c(10)),
      selectInput(inputId = "yAxis",label = "Y variable", c("wt","drat")),      
      selectInput(inputId = "xAxis",label = " X variable", c("cyl", "am","gear"))),



    mainPanel(
      h1("Please review the chart below showing nothing!"),

      ggvisOutput("ggvis")

      )


  )

  )

Server.r

# Create server.R

    shinyServer(function(input, output, session) {

      # A reactive expression wrapper for input$size
      input_size <- reactive(input$size)
      input_xAxis <- reactive(input$xAxis)
      input_yAxis <- reactive(input$yAxis)

      # A reactive expression wrapper for input$size


      mtcars %>% 
        ggvis(x =input_xAxis, y = input_yAxis, size := input_size) %>%
        layer_points() %>%
        bind_shiny("ggvis", "ggvis_ui")


    })

您缺少的两件事是使绘图具有反应性并在变量名称为字符串时使用 prop 设置属性。

以下更改服务器代码returns一个反应图形:

plot = reactive({
    mtcars %>%
    ggvis(prop("x", as.name(input_xAxis())), 
         prop("y", as.name(input_yAxis())), 
         size := input_size) %>%
    layer_points()
    })

plot %>%
    bind_shiny("ggvis", "ggvis_ui")