首页 > 解决方案 > valueBox 不改变颜色且未居中

问题描述

我正在尝试在 renderUi 包装器中向我闪亮的仪表板添加一个值框。到目前为止,我只找到了 valueBox 函数(尽管我对其他人开放,因为它非常严格)。然而,它不会改变颜色(见截图),尽管我给了它一个有效的颜色参数。此外,文本不居中。

理想情况下,我也希望将我的布局与主面板和侧边栏保持一致。

我会接受任何答案,如果它 1) 可以让 valueBox 成为“海军蓝”,居中,并带有白色文本或 2) 可以建议另一个可以实现相同目标的功能(如果我可以有更大的灵活性,那将是一个巨大的好处与颜色)。

可重现的例子:

library(shinydashboard)
library(shiny)
ui <- fluidPage(
    
    sidebarLayout(
        sidebarPanel(
            textInput(inputId = "greeting",
                      label = "Say hi!"),
            actionButton(inputId = "submit", 
                         label = "Submit")
            
        ),
        mainPanel(
            valueBoxOutput("total_projects")
            )
    ))
server <- function(input, output) {
    
    data <- tibble(name = c("Justin", "Corey", "Sibley"),
                   grade = c(50, 100, 100))

    
    output$total_projects <- renderValueBox({
        shiny::req(input$greeting)
        shiny::req(input$submit)
        if(input$greeting == "hi!") {
        num_100s <- data %>% filter(grade == 100) %>% nrow()
        valueBox(value = num_100s, subtitle = "Number of Perfect Scores",
                 color = "navy", width = 3) #setting color argument but it shows up white
        }
    })
}
shinyApp(ui, server)

注意:值框应该是海军蓝。

在此处输入图像描述

标签: rshinyshinydashboardreactiverenderui

解决方案


这回答了你的问题了吗?通过使用闪亮的 UI 函数/div/css 而不是 valueBox 选项,它居中并呈海军蓝。

library(shinydashboard)
library(shiny)
library(dplyr)

ui <- fluidPage(
    
    sidebarLayout(
        sidebarPanel(
            textInput(inputId = "greeting",
                      label = "Say hi!"),
            actionButton(inputId = "submit", 
                         label = "Submit")
            
        ),
        mainPanel(
            fluidRow(column(12,align="center",div(valueBoxOutput("total_projects"),style="color:white;"),style="background-color:navy;"))
        )
    ))
server <- function(input, output) {
    
    data <- tibble(name = c("Justin", "Corey", "Sibley"),
                   grade = c(50, 100, 100))
    
    
    output$total_projects <- renderValueBox({
        shiny::req(input$greeting)
        shiny::req(input$submit)
        if(input$greeting == "hi!") {
            num_100s <- data %>% filter(grade == 100) %>% nrow()
            valueBox(value = num_100s, subtitle = "Number of Perfect Scores",
                     color = "navy", width = 3) #setting color argument but it shows up white
        }
    })
}
shinyApp(ui, server)

在此处输入图像描述


推荐阅读