【问题标题】:valueBox not changing color and uncenteredvalueBox 不改变颜色且未居中
【发布时间】:2021-08-30 15:49:51
【问题描述】:

我正在尝试在 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)

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

【问题讨论】:

    标签: r shiny shinydashboard reactive renderui


    【解决方案1】:

    这是否回答了您的问题?通过使用闪亮的 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)
    
    

    【讨论】:

    • 解决了居中问题,谢谢!对于颜色,我希望框的背景为海军蓝,而文本为白色。
    • 我已经编辑了我的答案以进行这些更改
    • 此外,如果您只想更改框本身的背景颜色,您可能需要查看此问题的已接受答案:stackoverflow.com/questions/40647936/…
    • 我尝试运行您的代码,但我收到一条错误消息,提示未使用 width = 3。我删除了它并收到关于不使用图标参数的错误,我将其设置为 NULL。然而,它运行了,但我的盒子看起来不像你的那样整洁——它延伸了仪表板的整个长度,下面有一个长长的白色盒子,并且是“2”海军蓝。对正在发生的事情有任何想法吗?
    • 忽略我之前的评论,重置我的会话后,它看起来更接近你所拥有的,尽管它仍然没有出现居中。
    猜你喜欢
    • 2021-05-06
    • 1970-01-01
    • 2017-06-09
    • 2021-11-08
    • 1970-01-01
    • 2015-10-27
    • 2019-10-05
    • 1970-01-01
    • 2022-01-01
    相关资源
    最近更新 更多