1

我正在尝试将 wordcloud2 的输出下载到shiny.io 上托管的闪亮应用程序上。

以前,我在浏览器上下载 wordcloud2 输出时遇到问题,并设法在此处将wordcloud2 输出下载为 png/jpg on shiny解决。

为了比较和清楚起见,我展示了适用于传单地图的类似下载功能。我之所以包含传单地图部分,是因为 wordcloud 2 和传单地图输出都是 html,因此我认为它们会有相同的行为。

下面的代码显示

 library(leaflet)
 library(htmlwidgets)
 library(webshot)
 library(shiny)
  library(wordcloud2)

      ui <- fluidPage(
           leafletOutput("map"),
            downloadLink("downloadMap", "Download1"),
            downloadLink("savemap", "Download2"), 
            wordcloud2Output("wordclH2020"),
            downloadLink( "savecloud", "DImage"),
            downloadLink( "saveword", "DImage2")
                  )

      server <- function(input,output) {
         ###### MAP SECTION ##############################
            mapReact <- reactive({
                    leaflet() %>%      
 addTiles('http://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png') %>% 
     addCircles(12.5,42,radius=500) %>% addMarkers(12,42,popup="Rome")
      })

         output$map <- renderLeaflet({
                     mapReact()
                          })

     ##### map download 1 works on browser but not shiny.io ###########
        output$downloadMap <- downloadHandler(
                  filename = paste("LeafletMap", '.png', sep=''),
                  content = function(file) {
                  owd <- setwd(tempdir())
                  on.exit(setwd(owd))
              saveWidget(mapReact(), "temp.html", selfcontained = FALSE)
                webshot("temp.html", file = file, cliprect = "viewport")
                         })

        ##### map download 2 works on both browser and  shiny.io ###########
      output$savemap <- downloadHandler(
                filename = "map.html",
                content = function(file){
                saveWidget(
               widget = mapReact()
                , file = file
              )
               }
               )
 ############### WORD CLOUD SECTION ###############################
         wordcl <- reactive ({
            wordcloud2(demoFreq, color = "random-light", backgroundColor = "grey")  })

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

   ##### wordcloud download 1 works on browser but not shiny.io ###########  
             output$savecloud <- downloadHandler(
                   filename = paste("LeafletMap", '.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")

             })
  ##### wordcoud download 2 does not work on browser nor shiny.io ###########
    output$saveword <- downloadHandler(
             filename = "word.html",
              content = function(file){
              saveWidget(
              widget = wordcl()
                , file = file
                )
               }
               )

            }

      shinyApp(ui, server)

任何有关如何从 shiny.io 上托管的应用程序下载 wordcloud2 输出(以任何格式)的见解将不胜感激。

4

1 回答 1

1

我终于从这篇文章中发现,我需要通过将以下代码行添加到库调用部分来安装幻像依赖项

       webshot::install_phantomjs() 
       webshot:::find_phantom()

在shiny.io上发布我的应用程序时

于 2019-01-22T16:46:56.827 回答