Функция экспорта не поддерживает загрузку .svg - PullRequest
0 голосов
/ 10 декабря 2018

Ниже у меня блестящее приложение, которое отображает объект 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 голосов
/ 10 декабря 2018

Я не уверен, почему вы поставили туда switch, но мне это кажется очень неуместным.

Насколько я знаю, switch неплотно или блестящая функция, но только функция base-R.И эта функция просто помогает вам выбирать между делами, как своего рода помощь, предотвращающая необходимость писать бесконечные операторы if-else if-else if -...-.Он выбирает от 2-го до n-го аргумента, основываясь на первом, что-то вроде этого:

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

Безымянный аргумент присутствует в качестве запасного значения по умолчанию. Синтаксически не является неправильным задание значения по умолчанию в качестве единственного значения, но оно побеждает значение.По сути, вы написали sep <- "jpeg", а затем пошли дальше, не используя sep.Вы можете проверить это, изменив «jpeg» на что-то другое, разницы нет.

На следующем шаге вы просто пытаетесь сохранить файл, которому присвоено с правильным именем.Это приводит к тому, что экспорт пытается сохранить график в формате, распознаваемом расширением.Что может быть сделано автоматически для jpegs и pngs, но не для svg.

Некоторая справка написана в? Plotly :: export, где она говорит вам, что что-то нужно из пакета RSelenium.К сожалению, я не могу вам помочь, но я думаю, что вы можете найти ответы, прибегая к помощи большего количества этого пакета.
Но коммутатор вводит вас в заблуждение, по крайней мере, он работает не так, как вы пытаетесь его использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...