2016-08-17 5 views
0

私はShinyで作成したグラフをダウンロードしようとしていますが、この件についてはStackoverflowの投稿hereが見つかりました。しかし、私が答えからコードを実行すると、すべて正常に動作するように見えて、グラフが "保存"されたら開くことができなくなります。私はそれらを保存したフォルダでそれらを見ることができず、最近のファイルからそれらを開こうとすると、エラー "ファイルが見つかりません"がポップアップします。Shinyのグラフをダウンロード

library(shiny) 
library(ggplot2) 
runApp(list(
#ui 
    ui = fluidPage(downloadButton('downloadPlot')), 

#server 
server = 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$downloadPlot <- downloadHandler(
filename = function() { paste(input$dataset, '.png', sep='') }, 
content = function(file) { 
    ggsave(file, plot = plotInput(), device = "png") 
} 
) 
} 
)) 
+0

を私が定義したときにそれが私のために罰金すべての作品クライアント側でdownloadHandlerの入力が欠落しています: 'selectInput(" dataset "、"データセットを選択: "、 choices = c(" rock "、" pressure "、" cars "))' –

+0

'input $ dataset '' input $ filename'をUIの 'textInput'ですが、それでも動作しません – Hav11

答えて

0

を私はにtextInputを使用してコードを複製しようとしましたが、これは私のために正常に動作します:

これは私が使用しているコードです。

library(shiny) 
library(ggplot2) 
runApp(list(

#ui 
ui = fluidPage(downloadButton('downloadPlot'), 
       textInput("filename", "Choose a dataset:")), 

#server 
server = function(input, output) { 
    datasetInput <- reactive({ 
    switch(input$filename, 
      "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$downloadPlot <- downloadHandler(
    filename = function() { paste(input$filename, '.png', sep='') }, 
    content = function(file) { 
    ggsave(file, plot = plotInput(), device = "png") 
    } 
) 
} 
)) 
0

また、あなたがさらに構成せずにダウンロードする可能性を提供しplotly(ダウンロードボタンは、グラフの右上にある)を使用することができます:

library(shiny) 
library(plotly) 
runApp(list(
    #ui 
    ui = fluidPage(selectInput("dataset", "Choose a dataset:", choices = c("rock", "pressure", "cars")), 
       plotlyOutput('plot')), 

    #server 
    server = function(input, output) { 
    datasetInput <- reactive({ 
     switch(input$dataset, 
      "rock" = rock, 
      "pressure" = pressure, 
      "cars" = cars) 
    }) 

    output$plot <- renderPlotly({ 
     df <- datasetInput() 
     ggplot(df, aes_string(x=names(df)[1], y=names(df)[2])) + 
     geom_point() 

     ggplotly() 
    }) 

    } 
)) 
関連する問題