Tôi đang cố gắng tìm ra cách sử dụng downloadButton để lưu một cốt truyện bằng sáng bóng. Ví dụ trong gói minh họa downloadButton / downloadHandler để lưu .csv. Tôi sẽ làm một ví dụ có thể tái tạo dựa trên đó.
Đối với 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')
)
))
Đối với 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())
}
)
})
Nếu bạn đang trả lời câu hỏi này, có thể bạn đã quen thuộc với điều này, nhưng để điều này hoạt động, hãy lưu ở trên vào các tập lệnh riêng biệt ( ui.R
và server.R
vào một thư mục ( foo
) trong thư mục làm việc. Để chạy ứng dụng sáng bóng, hãy chạy runApp("foo")
.
Khi sử dụng ggsave
, tôi nhận được thông báo lỗi cho biết rằng ggsave không thể sử dụng filename
chức năng (tôi nghĩ vậy). Nếu tôi sử dụng thiết bị đồ họa tiêu chuẩn (như bên dưới), các Download Plot
tác phẩm hoạt động không có lỗi, nhưng nó không ghi hình ảnh.
Bất kỳ mẹo nào để tải xuống Trình xử lý làm việc để viết các âm mưu sẽ được đánh giá cao.
ggsave(file, plotInput(), device = png)
thay vì tạo một hàm thiết bị (trình bao bọc).