Guarda parcelas hechas en una aplicación brillante
Estoy tratando de averiguar cómo usar downloadButton para guardar un gráfico con brillos. El ejemplo en el paquete muestra downloadButton / downloadHandler para guardar un archivo .csv. Voy a hacer un ejemplo reproducible basado en eso.
porui.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')
)
))
porserver.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())
}
)
})
Si está respondiendo esta pregunta, probablemente esté familiarizado con esto, pero para que esto funcione, guarde lo anterior en guiones separados (ui.R
yserver.R
en una carpeta (foo
) dentro del directorio de trabajo. Para ejecutar la aplicación brillante, ejecuterunApp("foo")
.
Utilizandoggsave
, Recibo un mensaje de error que indica que ggsave no puede usar elfilename
Función (creo). Si utilizo el dispositivo de gráficos estándar (como a continuación), elDownload Plot
Funciona sin error, pero no escribe el gráfico.
Cualquier consejo para obtener DownloadHandler trabajando para escribir diagramas sería apreciado.