【问题标题】:Leave selected tabPanel description in Shiny App在 Shiny App 中保留选定的选项卡面板描述
【发布时间】:2021-10-30 10:44:18
【问题描述】:

我创建了一个CSS 来更改我闪亮主题的颜色。到目前为止还可以,但我想在顶部栏上进行调整,上面写着“abc”。在我创建 CSS 之前,只要我在这个面板中,它就会被选中,但是在我创建它之后,它不是。你知道如何调整这个吗?我将插入一张图片以更好地举例说明。

我在下面插入一个可执行代码:

非常感谢!

library(shiny)
library(shinythemes)
library(dplyr)
library(tidyr)
library(lubridate)

function.cl<-function(dt){
  df <- structure(
    list(date = c("01-08-2021","01-08-2021","01-08-2021","01-08-2021","01-08-2021",
                  "08-08-2021","08-08-2021","08-08-2021","08-08-2021","08-08-2021","08-08-2021",
                  "13-08-2021","13-08-2021","13-08-2021","13-08-2021","13-08-2021"),
         DR01 = c(2,1,0,0,3,0,1,0,1,7,2,3,4,6,7,8), DR02 = c(2,0,0,0,4,2,1,0,1,4,2,3,4,5,6,7),  
         DR03 = c(2,0,0,2,6,2,0,0,1,5,2,2,4,5,7,5), DR04 = c(2,0,0,5,6,2,0,0,3,7,2,3,4,5,6,4)),  
      class = "data.frame", row.names = c(NA, -16L))
  
  df$date <- parse_date_time(df$date, c('ymd', 'dmy'))
  
  scatter_date <- function(dt, dta = df) {
    dta %>%
      filter(date == ymd(dt)) %>%
      summarize(across(starts_with("DR"), sum)) %>%
      pivot_longer(everything(), names_pattern = "DR(.+)", values_to = "val") %>%
      mutate(name = as.numeric(name)) %>%
      plot(xlab = "Days", ylab = "Types", xlim = c(0, 7))
  }  
  Plot1<-scatter_date(dt)
  
  return(list(
    "Plot1" = Plot1, 
    date = df$date
  ))
}


ui <- shiny::navbarPage(theme = shinytheme("flatly"), collapsible = TRUE, selected = "abc",
                        tags$head(tags$style(HTML('.navbar-static-top {background-color: #02BE7F;}
                                                  .navbar-default .navbar-nav>.active>a {background-color: #02BE7F;}'))),
                        tabPanel("abc",
                                 sidebarLayout(
                                   sidebarPanel(
                                     uiOutput("date"),
                                     
                                     br(),
                                   ),
                                   
                                   mainPanel(
                                     tabsetPanel(
                                       tabPanel("",plotOutput("Graph",width = "95%", height = "600"))
                                     )
                                   ),
                                 )
                        )
                        
                       
)


server <- function(input, output,session) {
  data <- reactive(function.cl("2021-08-01"))
  
  output$date <- renderUI({
    all_dates <- seq(as.Date('2021-01-01'), as.Date('2021-01-15'), by = "day")
    disabled <- as.Date(setdiff(all_dates, as.Date(data()$date)), origin = "1970-01-01")
    dateInput(input = "date", 
              label = "Select Date",
              min = min(data()$date),
              max = max(data()$date),
              value = max(data()$date),
              format = "dd-mm-yyyy",
              datesdisabled = disabled)
  })
  
  output$Graph <- renderPlot({
    req(input$date)
    function.cl(input$date)[["Plot1"]]
  })
  
}

shinyApp(ui = ui, server = server)

之前:

之后:

【问题讨论】:

    标签: css r shiny


    【解决方案1】:

    您可以尝试为 .active 类设置不同的颜色。目前,您已指定background-color: #02BE7F,但由于它与导航栏颜色相同,因此并不明显。

    专业提示:您可以使用来自 RStudio 的 de bslib 包修改整个主题。真的很好用!

    【讨论】:

    • 谢谢 Samuel,我会尝试使用这个包
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 2017-07-09
    • 2016-06-26
    • 1970-01-01
    相关资源
    最近更新 更多