我绘制了高级图表对象并将它们存储在列表中。当我尝试在闪亮的仪表板中绘制它们时,它适用于一页。但是,如果我将其设置为动态,即依赖于输入列表的菜单和选项卡的数量不同,则它不显示任何内容,只显示一页图表,其他选项卡和菜单为空白。这是一个例子:
require(shiny)
require(shinydashboard)
require(highcharter)
temp <- lapply(list(sin((1:100)/10),tan((1:100)/10),runif(1e3),seq(100)/20),function(x)
highchart() %>% hc_add_series(runif(length(x))+x))
plot_list <- list(`Menu 1` = list(`Tab 1` = temp,
`Tab 2` = lapply(2:3,function(i) temp[[i]])),
`Menu 2` = list(`Tab 1` = lapply(1:2,function(i) temp[[i]])))
layout_column <- c(1,2) # columns per page
ui <- dashboardPage(
dashboardHeader(title = "My Page"),
dashboardSidebar(sidebarMenuOutput("sideBar_menu_UI")),
dashboardBody(uiOutput("test_UI"))
)
server <- shinyServer(function(input, output, session){
## create content for each page and tab
for(n in seq(plot_list)) ## menus
for(m in seq(plot_list[[n]])) ## tabs
lapply(seq(plot_list[[n]][[m]]), function(i) {
output[[paste0(LETTERS[n],letters[m], i)]] <- renderHighchart(plot_list[[n]][[m]][[i]])})
## create menu items
output$sideBar_menu_UI <- renderMenu(
sidebarMenu(id = "sideBar_Menu",
lapply(seq(plot_list),function(x)
menuItem(names(plot_list)[x], tabName=paste0("menu",x), icon = icon("calendar")))
))
## assign content to page of each menuItem
output$test_UI <- renderUI(
do.call(tabItems,lapply(seq(plot_list),function(x)
tabItem(tabName=paste0("menu",x),uiOutput(paste0("menu",x,"_UI")))))
)
for(n in seq(plot_list)) ## menus
for(m in seq(plot_list[[n]])) ## later change its location inside switch?s
output[[paste0("menu",n,"_UI")]] <- renderUI({
temp <- do.call(tabBox, lapply(names(plot_list[[n]]),function(tabname){
tabPanel(title = tabname,
fluidPage(
lapply(seq(plot_list[[n]][[m]]),function(i)
box(highchartOutput(paste0(LETTERS[n],letters[m], i)), ## get output plots
title = paste("Plot", i),
status = "primary", # primary, success, info, warning, danger
solidHeader = TRUE,collapsible = TRUE,width = 12/layout_column[n])
)))
}))
temp$attribs <- "col-sm-12" ## set width to page width
temp # check later the fluid page location
})
})
runApp(list(ui= ui, server = server))
我真正想要的是为应用程序提供一些高清图,它应该放置并在菜单和标签中呈现它们。 任何人都有这方面的线索?