【发布时间】:2017-08-13 13:15:23
【问题描述】:
我希望最终用户能够导出使用 Shiny 构建和部署的 visNetwork 图形的 .png。我可以通过在 renderVisNetwork 代码末尾使用 visExport 行来做到这一点,但我不喜欢在输出中生成的按钮的外观,按钮本身包含在导出的.png,而 .png 本身的质量并不是那么好。我喜欢 UI 中 downloadButton 生成的按钮的外观,但我在服务器端使用 downloadHandler 做错了。在浏览器中运行时,我单击下载按钮,出现下载对话框,并且能够保存文件,但文件是空白的(文件大小为 318 字节)。尝试 .pdf 也不起作用。这是我的代码:
ui.R:
downloadButton('ConDL', label='Download png')
服务器.R:
# Create network
ConNet <- function(){
visNetwork(Nodes(), Edges()) %>%
#all the other stuff to create the network which works fine
}
# Draw visualization - works fine
output$ConNet <- renderVisNetwork({
ConNet()
})
# Download png of visualization - no errors displayed in browser or
# console when testing, but exports blank png
output$ConDL <- downloadHandler(
filename="Con.png",
content= function(file) {
png(file)
ConNet()
dev.off()
}
)
我已遵循此处给出的关于使用函数而不是响应式生成对象的建议:Downloading png from Shiny (R)。将前面输入到 ConNet 的反应式转换为函数也是无效的。我在浏览器 (Firefox) 中打开应用程序,而不是通过预览窗格运行。在内容部分尝试print(ConNet()) 也无济于事,所以我不确定我错过了什么。
如果我可以在创建网络时获得 .png 以排除使用 visInteraction 生成的导航按钮,则奖励 - 它们对于交互部分很有用,但会使静态图形混乱。
【问题讨论】:
标签: r download shiny png vis.js