apexcharter/examples/export.R

60 lines
1.2 KiB
R

library(shiny)
library(apexcharter)
ui <- fluidPage(
fluidRow(
column(
width = 8, offset = 2,
tags$h2("Export PNG"),
actionButton("redraw", "Redraw chart"),
apexchartOutput("chart"),
downloadButton("download", "Download PNG"),
verbatimTextOutput("result"),
uiOutput(outputId = "image")
)
)
)
server <- function(input, output, session) {
output$chart <- renderApexchart({
input$redraw
apexchart() %>%
ax_chart(type = "bar") %>%
ax_series(
list(
name = "Example",
data = sample(1:100, 5)
)
) %>%
ax_xaxis(
categories = LETTERS[1:5]
) %>%
set_input_export("export")
})
output$result <- renderPrint({
input$export
})
output$download <- downloadHandler(
filename = function() {
"apexcharts.png"
},
content = function(file) {
img <- input$export$imgURI
raw <- base64enc::base64decode(what = gsub("data:image/png;base64,", "", img, fixed = TRUE))
png::writePNG(png::readPNG(raw), file)
}
)
output$image <- renderUI({
tags$img(src = input$export)
})
}
if (interactive())
shinyApp(ui, server)