Я бы посоветовал вам использовать пакет Highcharter.Таким образом, вам не нужно создавать кнопку загрузки, поскольку в диаграмме есть варианты загрузки в нескольких расширениях.Здесь я приведу пример гистограммы, выбирая экспорт в PNG, SVG, JPEG или PDF.
## Export charts with Highcharter in Shiny
# Load package
library('highcharter')
# UI side
highchartOutput('plot')
# Server side
output$plot <- renderHighchart({
# Define your data, here I am using Iris dataset as example
DT <- iris$Sepal.Length
# Define export options
export <- list(
list(
text = "PNG",
onclick = JS("function () {
this.exportChart({ type: 'image/png' }); }")
),
list(
text = "JPEG",
onclick = JS("function () {
this.exportChart({ type: 'image/jpeg' }); }")
),
list(
text = "SVG",
onclick = JS("function () {
this.exportChart({ type: 'image/svg+xml' }); }")
),
list(
text = "PDF",
onclick = JS("function () {
this.exportChart({ type: 'application/pdf' }); }")
)
)
# Plot histogram
hchart(DT,
type = "area",
name = colnames(iris[1])
) %>%
hc_exporting(
enabled = TRUE,
formAttributes = list(target = "_blank"),
buttons = list(contextButton = list(
text = "Export",
theme = list(fill = "transparent"),
menuItems = export
))
)
})
Вывод должен выглядеть примерно так:
Надеюсь, это поможет.
Владемир.