如何在没有仪表板结构的 ShinyApp 中利用 valuebox?

问题描述

我正在构建一个没有仪表板结构的 ShinyApp,因为我想使用左侧作为页面侧边栏,而不是导航到不同的页面。并让导航栏成为用户导航到不同页面的位置。

如果不使用 Shinydashboard/flexdashboard 结构,valueBox 将无法正确显示。有没有人知道如何在没有仪表板结构作为依赖的情况下利用 valueBox 设计?

我从 stackOverflow 中找到了一个示例,并针对此问题进行了重新调整:

没有仪表盘结构/valueBox的设计会丢失


library(shiny)
library(shinydashboard)


ui <- fluidPage(
    
    # Application title
    titlePanel("Old Faithful Geyser Data"),# Sidebar with a slider input for number of bins 
    sidebarLayout(
        sidebarPanel(
            sliderInput("bins","Number of bins:",min = 1,max = 50,value = 30)
        ),# Show a plot of the generated distribution
        mainPanel(
            valueBoxOutput("vBox1",width = 2)
        )
    )
)

server <- function(input,output) {
    
    
    output$vBox1 <- shinydashboard::renderValueBox({ 
        d <- 42
        shinydashboard::valueBox( d,"Ccy")
    })
    
}

shinyApp(ui,server)

仪表板/设计的正常方式,我想在没有仪表板结构的情况下实现 只有 UI 部分不同

library(shiny)
library(shinydashboard)

ui <- dashboardPage(skin = "black",dashboardHeader(title = "test"),dashboardSidebar(
                        sidebarMenu()),dashboardBody(
                        fluidRow(
                            valueBoxOutput("vBox1",width = 2))))

server <- function(input,server)

解决方法

您可以使用 useShinydashboard 中的 shinyWidgets 来实现所需的结果:

library(shiny)
library(shinydashboard)
library(shinyWidgets)


ui <- fluidPage(
  useShinydashboard(),# Application title
  titlePanel("Old Faithful Geyser Data"),# Sidebar with a slider input for number of bins 
  sidebarLayout(
    sidebarPanel(
      sliderInput("bins","Number of bins:",min = 1,max = 50,value = 30)
    ),# Show a plot of the generated distribution
    mainPanel(
      valueBoxOutput("vbox1",width = 2)
    )
  )
)

server <- function(input,output) {
  
  
  output$vbox1 <- shinydashboard::renderValueBox({ 
    d <- 42
    shinydashboard::valueBox( d,"Ccy")
  })
  
}

shinyApp(ui,server)