R Shiny визуализирует графики асинхронно, как только они готовы - PullRequest
1 голос
/ 12 марта 2019

Из приведенного ниже блока кода можно отобразить plotlyOutput ("users") асинхронно / полностью независимо от plotlyOutput ("apps")?Сейчас мне нужно подождать, пока они оба завершат все процессы, чтобы сделать окончательное блестящее приложение единым монолитным выходом.В идеале все визуальные элементы имеют загрузочные значки «withSpinner» и загружаются независимо.

Я посмотрел на будущее / обещания, пытаясь обернуть операторы renderPlotly в будущее ({code}), но не смог заставить это работать и в итоге не был уверенесли это был правильный путь.

Примечание: df "rsc_usage" загружается из файла .feather в S3 --- Я пропустил этот код

### PULL IN REQUIRED LIBRARIES
library(shiny)
library(ggplot2)
library(plotly)
library(data.table)
library(dplyr)
library(aws.s3)
library(DT)
library(shinydashboard)
library(shinyWidgets)
library(tidyr)
library(feather)
library(shinycssloaders)


ui = dashboardPage(
  dashboardHeader(
    disable = FALSE,
    title = "Customer Activity",
    titleWidth = '100%'
  ),

  dashboardSidebar(disable = TRUE),
  dashboardBody(tabsetPanel(type = "tabs",
                            tabPanel(
                              'Analytics',
                              fluidRow(
                                column(6, plotlyOutput("users") %>% withSpinner(color = "#0dc5c1")),
                                column(6, plotlyOutput("apps") %>% withSpinner(color =
                                                                                 "#0dc5c1"))
                              )
                            )))
)


server <- function(input, output, session) {
  output$users <- renderPlotly({
    ggplotly(
      rsc_usage <- rsc_usage %>%
        group_by(username) %>%
        summarise(visits = n()) %>%
        arrange(desc(visits)) %>%
        head(15) %>%
        ggplot(., aes(
          reorder(username, visits),
          visits,
          text = sprintf("username: %s<br>visits: %s", username, visits)
        )) +
        geom_bar(stat = "identity") +
        coord_flip() +
        theme_minimal() +
        labs(y = "Number of page visits",
             x = NULL) +
        ggtitle("top users")
      ,
      tooltip = c("text")
    )
  })

  output$apps <- renderPlotly({
    ggplotly(
      rsc_usage <- rsc_usage %>%
        group_by(name) %>%
        summarise(visits = n()) %>%
        arrange(desc(visits)) %>%
        head(15) %>%
        ggplot(., aes(
          reorder(name, visits),
          visits,
          text = sprintf("name: %s<br>visits: %s", name, visits)
        )) +
        geom_bar(stat = "identity") +
        coord_flip() +
        theme_minimal() +
        labs(y = "Number of page visits",
             x = NULL) +
        ggtitle("top content")
      ,
      tooltip = c("text")
    )
  })

}

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