R / Shiny图不会在浏览器中显示

时间:2012-12-16 18:22:55

标签: r plot rstudio shiny

我最近开始玩Shiny。我试图写一些东西来证明中心极限定理。我的代码如下:

ui.R:

#****************************************ui.R file code*****************************

library(shiny)
shinyUI(pageWithSidebar(headerPanel("Central Limit Theorem"),
                        sidebarPanel(selectInput("Distribution", 
                                                 "Distribution:", 
                                                 list("normal", "lognormal")),
                                                 br(),
                                                 sliderInput("sam_size", 
                                                              "Sample size:", 
                                                              min = 5, 
                                                              max = 500, 
                                                              value = 5)
                        ),
                        mainPanel(tabPanel("Plot", plotOutput("plot")))
))

server.R:

#****************************************server.R file code**************************
library(shiny)
shinyServer(function(input, output){
        data <- reactive(function(){Distribution <- switch(input$Distribution,
                                                           normal = rnorm,
                                                           lognormal = rlnorm,
                                                           rnorm
                                                           )
                                    Distribution(input$sam_size*2000)})

        output$plot <- reactive(function(){
                            Distribution <- input$Distribution
                            sam_size <- input$sam_size
                            temp <- matrix(data(), ncol=2000)
                            xbars <- colMeans(temp)
                            hist(xbars, main=paste("Sampling Distribution of the Mean Based on a", Distribution,
                         "distribution with n =", sam_size))})
})

当我尝试使用runApp()运行代码时,下面是我得到的。如您所见,未显示绘图。

enter image description here

奇怪的是,当我回到我的Rstudio,并按下“Esc”退出应用程序时,我的Rstudio中显示的情节如下所示:

enter image description here

我想知道是否有人知道我的代码存在什么问题。谢谢!

1 个答案:

答案 0 :(得分:9)

您希望使用reactivePlot(...)包装绘图功能,而不仅仅是reactive(...)

通常,reactive(...)应该用于服务器中的辅助函数,它将input依赖数据传递给output函数。但是,实际生成output个对象的函数应该包含专门的反应函数,例如reactiveTextreactivePrintreactiveTablereactivePlot。< / p>