Из приведенного ниже блока кода можно отобразить 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)