为了账号安全,请及时绑定邮箱和手机立即绑定

保存在闪亮的应用程序中绘制的图

保存在闪亮的应用程序中绘制的图

慕丝7291255 2019-10-25 10:52:04
我试图弄清楚如何使用downloadButton保存具有光泽的图。包中的示例演示了downloadButton / downloadHandler保存.csv的方法。我将基于此举一个可复制的示例。对于 ui.RshinyUI(pageWithSidebar(  headerPanel('Downloading Data'),  sidebarPanel(selectInput("dataset", "Choose a dataset:",             choices = c("rock", "pressure", "cars")),    downloadButton('downloadData', 'Download Data'),    downloadButton('downloadPlot', 'Download Plot')  ),  mainPanel(    plotOutput('plot')  )))对于 server.Rlibrary(ggplot2)shinyServer(function(input, output) {  datasetInput <- reactive({    switch(input$dataset,           "rock" = rock,           "pressure" = pressure,           "cars" = cars)  })  plotInput <- reactive({    df <- datasetInput()    p <-ggplot(df, aes_string(x=names(df)[1], y=names(df)[2])) +      geom_point()  })  output$plot <- renderPlot({    print(plotInput())  })  output$downloadData <- downloadHandler(    filename = function() { paste(input$dataset, '.csv', sep='') },    content = function(file) {      write.csv(datatasetInput(), file)    }  )  output$downloadPlot <- downloadHandler(    filename = function() { paste(input$dataset, '.png', sep='') },    content = function(file) {      ggsave(file,plotInput())    }  )})如果您正在回答此问题,则可能对此很熟悉,但是要使其正常工作,请将以上内容保存到单独的脚本中(ui.R以及工作目录中server.R的文件夹(foo)中)。要运行闪亮的应用程序,请运行runApp("foo")。使用ggsave,我收到一条错误消息,指示ggsave无法使用该filename功能(我认为)。如果我使用标准的图形设备(如下所示),则Download Plot可以正常工作,但不会写入图形。任何使downloadHandler可以用于编写图表的技巧都将受到赞赏。
查看完整描述

3 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

我没有设法使其与一起使用ggsave,但是通过标准调用png()它似乎还可以。


我只更改了文件的output$downloadPlot一部分server.R:


 output$downloadPlot <- downloadHandler(

    filename = function() { paste(input$dataset, '.png', sep='') },

    content = function(file) {

      png(file)

      print(plotInput())

      dev.off()

    })

请注意,我在使用0.3版本的Shiny时遇到了一些问题,但是它可以与Github的最新版本一起使用:


library(devtools)

install_github("shiny","rstudio")


查看完整回答
反对 回复 2019-10-25
  • 3 回答
  • 0 关注
  • 559 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信