2016-08-17 2 views
0

Я пытаюсь загрузить график, который я сделал в Shiny, я нашел сообщение Stackoverflow об этой теме here. Однако, когда я запускаю код из ответа, все попытки работать отлично, за исключением того, что я не могу открыть графики после их сохранения. Я не вижу их в папке, в которую я их сохранил, и когда я пытаюсь открыть их из моих последних файлов, появляется сообщение об ошибке «file not found».Загрузка графиков в 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 (« набор данных »,« Выберите набор данных: », choice = c (« rock »,« pressure »,« cars »))' –

+0

Я изменил 'input $ dataset '' вводить $ filename', который является '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() 
    }) 

    } 
)) 
Смежные вопросы