我得到错误文件,而下载数据的条形图呈现在闪亮的UI。在图表下面有一个下载按钮。单击“下载数据”按钮时,数据应下载为csv格式。
代码:
library(shiny)
library(ECharts2Shiny)
dat <- data.frame(c(1, 2, 3), c(2, 4, 6))
names(dat) <- c("Type-A", "Type-B")
row.names(dat) <- c("Time-1", "Time-2", "Time-3")
ui <- fluidpage( loadEChartsLibrary(),
tags$div(id="test", style="width:50%;height:400px;"),
deliverChart(div_id = "test"), downloadButton("test", "Download Data"))
server <- function(input, output) {
renderBarChart(div_id = "test", grid_left = '1%', direction = "vertical",
data = dat)
}
shinyApp(ui = ui, server = server)我想下载".csv“格式的条形图的数据。有人能帮我改正密码吗?
谢谢。
发布于 2018-12-03 07:37:52
我认为您不能对所有UI输入使用相同的"renderTable“服务器输出。也就是,您需要以可下载文件的形式为您的图像进行单独的输入和输出。下面是我下载.csv文件的一个例子:
output$downloadData <- reactive({
output$downloadData <- downloadHandler(
filename = function() {
paste("ProcessedData-", Sys.Date(), ".csv", sep="")
},
content = function(file) {
write.csv(DataTable, file)
}
)因此,在下载按钮中,您可以将"test“替换为"downloadData”,以便连接到新的服务器输出。请注意,我在这里使用write.csv创建文件,但实际上不是只生成文件并将其传递到downloadData输出中的任何磁盘,以便用户在单击downloadData输入按钮时触发并保存到自己的磁盘。您正在尝试保存图片,所以我建议尝试一些类似于在内容调用中生成图像文件的方法。回想一下,您可以将图像保存为对象:
#up in the UI somewhere
ui <- fluidpage(loadEChartsLibrary(),
tags$div(id="test", style="width:50%;height:400px;"),
deliverChart(div_id = "test"), downloadButton("downloadData", "Download Data"))
server <- function(input, output) {
output$test <- renderBarChart(div_id = "test", grid_left = '1%', direction = "vertical",
data = dat)
output$downloadData <- reactive({
output$downloadData <- downloadHandler(
filename = function() {
paste("Image.png", sep="") #just the file name you want to have as default
},
content = function(file) {
write.csv(DataTable, file)
)
}我没有您的实际代码,所以这可能不能作为即插即用的解决方案,但我相信这是正确的方向。
https://stackoverflow.com/questions/53588281
复制相似问题