나는 downloadButton을 사용하여 반짝이는 플롯을 저장하는 방법을 알아 내려고 노력하고 있습니다. 패키지의 예제는 .csv를 저장하는 downloadButton / downloadHandler를 보여줍니다. 나는 그것을 기반으로 재현 가능한 예를 만들 것입니다.
에 대한 ui.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')
)
))
에 대한 server.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())
}
)
})
이 질문에 답하는 경우 아마도 이것에 익숙 할 것입니다. 그러나이 작업을 수행하려면 위의 내용을 별도의 스크립트 ( ui.R
및 작업 디렉터리 내의 server.R
폴더 ( foo
)에 저장)에 저장하십시오 . 반짝이는 앱을 실행하려면 runApp("foo")
.
를 사용하면 ggsave
ggsave가 filename
기능을 사용할 수 없다는 오류 메시지가 나타납니다 (내 생각에). 표준 그래픽 장치 (아래처럼) Download Plot
를 사용하면 오류없이 작동하지만 그래픽을 쓰지 않습니다.
플롯 작성을 위해 downloadHandler를 사용하는 모든 팁을 주시면 감사하겠습니다.
ggsave(file, plotInput(), device = png)
장치 (래퍼) 기능을 만드는 대신 사용할 수도 있습니다.