Shiny Dashboard中ValueBox无法显示问题求助
问题排查:Shiny Dashboard中ValueBox未正常渲染的解决方法
嘿,我看你遇到了Shiny Dashboard里ValueBox只显示文本、没正常渲染成带样式盒子的问题,结合你提供的代码和截图,咱们来一步步搞定它:
问题根源
你同时加载了shinydashboard和flexdashboard两个包,但这两个包都有自己的valueBox和renderValueBox函数。由于你是先加载shinydashboard再加载flexdashboard,后加载的包的函数会覆盖先加载的——也就是说你实际调用的是flexdashboard::valueBox,而这个函数是为flexdashboard文档设计的,并不适配shinydashboard的页面结构,所以只会输出纯文本,不会渲染出带样式的ValueBox。
你当前的错误显示效果如下:
解决方案
这里有两种可行的解决方式,你可以根据需求选择:
方式1:移除flexdashboard包的加载(推荐)
如果你只是在shinydashboard里使用ValueBox,完全不需要加载flexdashboard——shinydashboard本身就自带完整的ValueBox功能。直接去掉library(flexdashboard)这一行即可。
修正后的UI代码:
library(shiny) library(shinydashboard) ui <- dashboardPage( skin = "black", dashboardHeader(title = "test"), dashboardSidebar(sidebarMenu()), dashboardBody( fluidRow( valueBoxOutput("vbox1", width = 2), valueBoxOutput("vbox2", width = 2), valueBoxOutput("vbox3", width = 2), valueBoxOutput("vbox4", width = 2), valueBoxOutput("vbox5", width = 2), valueBoxOutput("vbox6", width = 2) ) ) )
Server代码无需修改,保持原样即可。
方式2:明确指定函数所属包(若必须用flexdashboard)
如果你确实需要在项目中使用flexdashboard的其他功能,那就要明确指定调用shinydashboard里的ValueBox相关函数,避免函数冲突。
修改后的Server代码示例:
server <- function(input, output) { # valuebox output$vbox1 <- shinydashboard::renderValueBox({ d <- 10 shinydashboard::valueBox(d, caption = "Coss") }) output$vbox2 <- shinydashboard::renderValueBox({ d <- 42 shinydashboard::valueBox(d,"Ccy") }) output$vbox3 <- shinydashboard::renderValueBox({ d <- 75 shinydashboard::valueBox(d,"Cty")}) output$vbox4 <- shinydashboard::renderValueBox({ d <- 21 shinydashboard::valueBox(d,"Dup")}) output$vbox5 <- shinydashboard::renderValueBox({ d <- 34 shinydashboard::valueBox(d,"Inte")}) output$vbox6 <- shinydashboard::renderValueBox({ d <- 56 shinydashboard::valueBox(d,"Acd")}) } shinyApp(ui, server)
这样就能确保调用的是shinydashboard的ValueBox函数,正常渲染出带样式的盒子了。
内容的提问来源于stack exchange,提问作者Balaji N
相关产品推荐
相关产品推荐

