Zapisz działki wykonane w błyszczącej aplikacji
Próbuję dowiedzieć się, jak użyć downloadButton, aby zapisać działkę z połyskiem. Przykład w pakiecie demonstruje downloadButton / downloadHandler, aby zapisać plik .csv. Mam zamiar stworzyć na tej podstawie powtarzalny przykład.
Dlaui.R
shinyUI(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')
)
))
Dlaserver.R
library(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())
}
)
})
Jeśli odpowiadasz na to pytanie, prawdopodobnie znasz to zagadnienie, ale aby to zadziałało, zapisz powyższe w osobnych skryptach (ui.R
iserver.R
do folderu (foo
) w katalogu roboczym. Aby uruchomić błyszczącą aplikację, uruchomrunApp("foo")
.
Za pomocąggsave
, Dostaję komunikat o błędzie wskazujący, że ggsave nie może użyćfilename
funkcja (myślę). Jeśli korzystam ze standardowego urządzenia graficznego (jak poniżej), theDownload Plot
działa bez błędu, ale nie pisze grafiki.
Docenione zostaną wszelkie wskazówki dotyczące pobierania downloadHandler do pisania wątków.