Загрузка вывода Wordcloud2 в виде PNG / JPG на блестящей - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь загрузить вывод из Wordcloud2 на блестящей.Мой код выглядит следующим образом:

 library(shiny)
 library(htmlwidgets)
 library(webshot)
      ui <- shinyUI(fluidPage(mainPanel(
            wordcloud2Output("wordcl"),
            downloadButton(outputId = "savecloud"),
            downloadButton(outputId = "savecloud2")
      )))

  server <- shinyServer(function(input, output, session) {
          wordcl <- reactive ({
           wordcloud2(demoFreq, color = "random-light", backgroundColor = "grey")    
    })

        output$wordcl <- renderWordcloud2({  wordcl() })

 ##### SOLUTION 1 #########
   output$savecloud <- downloadHandler(
          filename = "word.png",
          content = function(cloud) {
          file.copy(wordcl(), cloud)
           })
##### SOLUTION 2 ##########
  output$savecloud2 <- downloadHandler(
        saveWidget(wordcl(), file="temp.html", selfcontained = F),
         webshot("temp.html", file = "word2.png",
      cliprect = "viewport")
      )
      })

shinyApp(ui = ui, server = server)

Я пробовал два стиля, используя загрузчик, как показано в коде, но они возвращают пустые результаты.

Любая информация о том, почему они не работают обработчиком загрузок, или перенаправление о том, как лучше всего использовать функцию загрузки, будут оценены.

1 Ответ

0 голосов
/ 21 января 2019

Мне удалось заставить свою загрузку работать, используя пример функции обработчика загрузки, размещенной на LeafletMaps здесь: Почему webshot не работает с листовками в R блестящий?

Мой обновленный код выглядит следующим образом:

  library(shiny)
  library(htmlwidgets)
  library(webshot)
  library(wordcloud2)
 #webshot::install_phantomjs()


  ui <- shinyUI(fluidPage(mainPanel(
       wordcloud2Output("wordcl"),
       downloadButton(outputId = "savecloud")
        )))

 server <- shinyServer(function(input, output, session) {
          wordcl <- reactive ({
         wordcloud2(demoFreq, color = "random-light", backgroundColor = "grey")
                    })
        output$wordcl <- renderWordcloud2({
                         wordcl()
                             })   
    output$savecloud <- downloadHandler(
               filename = paste("wordcloud", '.png', sep=''),
               content = function(file) {
               owd <- setwd(tempdir())
               on.exit(setwd(owd))
              saveWidget(wordcl(), "temp.html", selfcontained = FALSE)
              webshot("temp.html", delay =15, file = file, cliprect = "viewport")
                    }) 
          })

shinyApp(ui = ui, server = server)

Решение, приведенное по ссылке, похоже, объединяет решения, которые я пытался реализовать в своем первоначальном посте.

Единственная проблема заключается в том, что он не работает при развертывании приложения на глянцевом.io

...