无法在Shiny App中使用ggvis进行绘图

时间:2017-04-25 21:19:43

标签: r shiny rstudio

经过几个小时的修补和谷歌搜索后,我想我可能会走到尽头。我正在学习Shiny R并且正在尝试使用ggvis库创建散点图。到目前为止,我有以下代码:

app.R:

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

# Define UI for application
ui <- fluidPage(
         p("hello world"),
         ggvisOutput("plot"),
         p("hello world")
)

# Define server logic
server <- function(input, output, session) {

   #Plot a scatter plot for employment counts
   output$plot <- reactive({

      year <- c(2011, 2012, 2013, 2014, 2015, 2016)
      plotData <- c(123456, 1234567, 234561, 213465, 465791, 222222)

      dataDF <- data.frame(Year = year, Data = plotData)
      layer_points(ggvis(dataDF, ~Year, ~Data))

   })
}

# Knit the ui and server, then run the application 
shinyApp(ui = ui, server = server)

我猜这应该很简单但是当我运行它时我没有得到任何情节。它只显示hello world两次,其间有空格。我使用Rstudio复制了这个,没有Shiny App插件,它看起来很好!我正在遵循代码here,显然我试图简化工作。我也一直关注这个link,遗憾的是没有运气。

有人会有任何想法吗?真的很感激帮助。

1 个答案:

答案 0 :(得分:0)

来自?ggvis::ggvisOutput

  

服务器侧

     

以交互方式运行ggvis plot时,会自动绘制   因为它触发了默认的打印方法。 在闪亮的应用中,您需要   使用将图表显式渲染到特定占位符   bind_shiny

     

p %>% bind_shiny("plot")

所以你可以做bind_shiny(layer_points(ggvis(dataDF, ~Year, ~Data)), "plot")

或使用%>%

data.frame(Year = year, Data = plotData) %>%
  ggvis(~Year, ~Data) %>%
  layer_points() %>%
  bind_shiny("plot")

请注意,您无需将其置于被动状态。