问题描述
我正在尝试在 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)
注意:值框应该是深蓝色。
解决方法
这是否回答了您的问题?它通过使用闪亮的 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)