使用自定义函数和renderPlot()渲染ggplot2对象

时间:2018-03-09 20:33:08

标签: r shiny

我在查看ggplot时遇到了麻烦。当我运行以下代码时,我得到的只是一个空白屏幕,但没有错误消息:

library(ggplot2)
library(shiny)

if (interactive()) {
  ui <-{plotOutput(outputId = "main_plot", height = "300px")}

  server <- function(input, output){
    plotInput <- reactive({ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point()})

    output$main_plot <- renderPlot(expr=function(){
      #conditional statements
      plotInput()}
    )

  }
  shinyApp(ui, server)
}

但是,如果在没有函数定义的情况下运行完全相同的代码,则会显示该图。我非常困惑,因为renderPlot的文档允许使用表达式:

if (interactive()) {
  ui <-{plotOutput(outputId = "main_plot", height = "300px")}

  server <- function(input, output){
    plotInput <- reactive({ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point()})

    output$main_plot <- renderPlot(plotInput())

  }
  shinyApp(ui, server)
}

这是一个问题,因为我想运行一些条件语句来确定是否显示图。我使用正确的方法吗?

1 个答案:

答案 0 :(得分:1)

expr=的{​​{1}}应该是一个表达式。你正在传递一个函数。那些不一样。尝试取消rennderPlot()部分。

库(GGPLOT2) 库(有光泽)

function()