导出功能不支持.svg下载

时间:2018-12-10 16:52:57

标签: r svg shiny

我下面有一个闪亮的应用程序,其中显示plotly()标记和一个下载按钮以下载它。正常下载png和jpeg时,当我尝试下载svg文件时似乎出现了问题。

library(shiny)
library(plotly)
library(webshot)
ui <- fluidPage(
  plotlyOutput("plot"),
  uiOutput("down")
)

server <- function(input, output) {

  # renderPlotly() also understands ggplot2 objects!
  save<-reactive({
    plot_ly(mtcars, x = ~mpg, y = ~wt)

  })
  output$plot <- renderPlotly({
    save()
  })

  output$down<-renderUI({

    #Download files with quotes or not depending on the quote=input$quotes which has value TRUE or FALSE.
    output$downloadData <- downloadHandler(
      filename = function() {
        paste("test", "svg", sep = ".")
      },

      # This function should write data to a file given to it by
      # the argument 'file'.
      content = function(file) {
        # Write to a file specified by the 'file' argument
        export(save(), file=file)

      }

    )
    downloadButton("downloadData", "Download",class = "butt1")
  })
}

shinyApp(ui, server)    

1 个答案:

答案 0 :(得分:0)

我不确定您为什么首先将switch放在其中,但对我来说看起来很不合适。

据我所知,switch不是一个绘图函数或闪亮函数,而只是base-R函数。该功能只是帮助您在各种情况之间进行选择,作为一种帮助您避免不得不编写无尽的if-else if-else if -...语句的帮助。 它根据第一个参数从第二个参数到第n个参数进行选择,如下所示:

myvar <- sample(c('one', 'two', 'three'))
counted <- switch(myvar,
                  one='First',
                  two='Second',
                  three='Third',
                  'Error')

未命名的参数作为后备默认值存在。 在语法上给出默认值作为唯一值并没有错,但确实会破坏该值。基本上,您编写的是sep <- "jpeg",然后继续进行操作,而不使用sep。您可以通过将“ jpeg”更改为其他内容来进行检查,没有区别。

在下一步中,您只是尝试保存正确命名 的文件。 这导致导出尝试以扩展名识别的格式保存图。对于jpeg和png可以自动完成,而对于svg则不能自动完成。

有些帮助是用?plotly :: export编写的,它告诉您需要RSelenium软件包中的某些内容。不幸的是,我不能为您提供帮助,但是我认为您可以通过更多地搜索该软件包来找到答案。
但是交换机会误导您,至少不会按照您尝试使用的方式工作。