使用下载处理程序将ggplot图像保存为闪亮的

时间:2018-04-23 09:45:26

标签: r ggplot2 shiny

我正在开发一个有光泽的应用程序。在闪亮的情况下,我使用动作按钮渲染一个简单的绘图。我已经包含一个下载按钮来下载现在在UI中的绘图。从我的代码(plot3)

我尝试了下面的代码来保存图片,但是我收到了错误

  

找不到plotInput。

任何人都可以建议我哪里出错了。

以下是我的代码供参考。 UI:

ui <- tabItem(tabName = "models2",
        fluidPage(
          fluidRow(
            infoBoxOutput("overview")
          ),
          fluidRow(
            actionButton("result1","Generate Result"),
            downloadButton('downloadPlot','Download Plot'),
            plotOutput("plot3")
          )
        ))

SERVER

server <- function(input,output,session{
 output$overview <- renderValueBox({
      valueBox(
        paste("91"),"Overview",icon=icon("hourglass"),
        color="green"
      )
    })
  observeEvent(input$result1,{
  output$plot3  <- renderPlot({
    ggplot(data=timedata, aes(x=dat1, y=yes, group=3))+ 
      geom_point(shape=1)+
      coord_cartesian(xlim=c(dat1_xlowlim,dat1_xhighlim))+
      labs(title="Probability",x="Date",y="True probability")  
  })
  })
  output$downloadPlot <- downloadHandler(
    filename = function(){paste(input$plot3,'.png',sep='')},
    content = function(plot3){
      ggsave(plot3,plotInput())

    }
  )
})

另外,请注意我的闪亮和R工作室是在R环境中。

1 个答案:

答案 0 :(得分:1)

library(shiny)
library(shinydashboard)
ui <- tabItem(tabName = "models2",
          fluidPage(
            fluidRow(
              infoBoxOutput("overview")
            ),
            fluidRow(
              actionButton("result1","Generate Result"),
              downloadButton('downloadPlot','Download Plot'),
              plotOutput("plot3")
            )
          ))

server <- function(input,output,session){
           output$overview <- renderValueBox({
           valueBox(
            paste("91"),"Overview",icon=icon("hourglass"),
           color="green"
      )
  })
    data <- reactiveValues()
    observeEvent(input$result1,{

    data$plot <- ggplot(data=iris, aes(x=Sepal.Length, y=Sepal.Width))+ 
    geom_point(shape=1)

    #+
    #coord_cartesian(xlim=c(dat1_xlowlim,dat1_xhighlim))+
    #labs(title="Probability",x="Date",y="True probability")  

  })

    output$plot3  <- renderPlot({  data$plot })

    output$downloadPlot <- downloadHandler(
         filename = function(){paste("input$plot3",'.png',sep='')},
         content = function(file){
          ggsave(file,plot=data$plot)

    }
  )
}

shinyApp(ui,server)