2016-08-17 7 views
0

Ich versuche, das Diagramm, das ich in Shiny erstellt habe, herunterzuladen, ich habe einen Stackoverflow-Beitrag zu diesem Thema gefunden here. Wenn ich jedoch den Code aus der Antwort ausführe, sieht alles gut aus, außer dass ich die Graphen nicht öffnen kann, wenn sie "gespeichert" sind. Ich kann sie nicht in dem Ordner sehen, in dem ich sie gespeichert habe, und wenn ich versuche, sie aus meinen letzten Dateien zu öffnen, erscheint ein Fehler "Datei nicht gefunden".Herunterladen von Diagrammen in Shiny

Dies ist der Code Ich verwende:

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

Es funktioniert alles gut für mich, wenn ich definieren auf der Client-Seite eine fehlende Eingabe in downloadHandler: 'selectInput (" Datensatz "," Wählen Sie einen Datensatz: ", Auswahlen = c (" Rock "," Druck "," Autos ")' –

+0

Ich habe 'Eingabe $ Datensatz geändert 'zu' Eingabe von $ filename', was ein 'textInput' in meiner UI ist, aber es funktioniert immer noch nicht – Hav11

Antwort

0

Ich habe versucht, den Code mit textinput zu replizieren und das funktioniert gut für mich.

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

Alternativ können Sie plotly verwenden, die eine Download-Möglichkeit ohne weitere Konfigurationen liefert (Download-Button in der oberen rechten Ecke des Diagramms):

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() 
    }) 

    } 
)) 
Verwandte Themen