【问题标题】:Adjust tabPanel in Shiny在 Shiny 中调整 tabPanel
【发布时间】:2021-10-19 17:09:14
【问题描述】:

您能帮我调整一下我在下面的代码中插入的两个tabPanel 吗?我插入了两个,它们都没有显示,我不知道我错了什么。欢迎任何帮助。提前致谢。我在下面插入了一个可执行代码

library(shiny)
library(shinythemes)
library(dplyr)

function.test<-function(){
  
  df1 <- structure(
    list(date= c("2021-06-28","2021-06-28","2021-06-28"),
        Category = c("ABC","ABC","ABC"),
         Week= c("Wednesday","Wednesday","Wednesday"),
         DR1 = c(4,1,0),
         DR01 = c(4,1,0), DR02= c(4,2,0),DR03= c(9,5,0),
         DR04 = c(5,4,0),DR05 = c(5,4,0),DR06 = c(5,4,0),DR07 = c(5,4,0),DR08 = c(5,4,0)),
    class = "data.frame", row.names = c(NA, -3L))
  
  
  
  return(df1)
}


ui <- fluidPage(
  
  ui <- shiny::navbarPage(theme = shinytheme("flatly"), collapsible = TRUE,
                          br(),
                          
                          tabPanel("First Panel",
                                   fluidPage(
                                     fluidRow(
                                       br(), br(),
                                       
                              column(4, "",
                                     wellPanel(
                                       uiOutput("date"),
                                       uiOutput("mycode")
                                     ),
                                     wellPanel(
                                       conditionalPanel(
                                         condition = "output.mycode",
                                         actionButton("reset", "Reset")               
                                       )
                                     )
                              ),
                              
                              column(8, "",
                                     tabsetPanel(
                                       tabPanel("Output1", plotOutput("graph",width = "100%", height = "600"),
                                        tabPanel("Output2",uiOutput('daterange')),
                                        tabPanel("Output3")
                                       )
                                     )
                              ))
                          )
  )))


server <- function(input, output,session) {
  
  data <- reactive(function.test())
  
  
  output$date <- renderUI({
    req(data())
    all_dates <- seq(as.Date('2021-01-01'), as.Date('2021-01-15'), by = "day")
    disabled <- as.Date(setdiff(all_dates, as.Date(data()$date2)), origin = "1970-01-01")
    dateInput(input = "date2",
              label = h4("Data"),
              min = min(data()$date2),
              max = max(data()$date2),
              value = NA,
              format = "dd-mm-yyyy",
              datesdisabled = disabled)
    
  })
  

  output$daterange <- renderUI({
    tagList(dateRangeInput("daterange1", "",
                           start = min(data()$date),
                           end   = max(data()$date),
                           min   = min(data()$date),
                           max   = max(data()$date),
                           format = "dd-mm-yyyy"))
  })         
    
   

  observeEvent(input$reset, {
    req(input$date2)
    df1 <- data()
    my$plot <- NULL
    updateDateInput(session, 'date2', value = NA)
    updateSelectInput(session, 'code', h4("Category"),choices= unique(df1$Category), selected=character(0))
  })
  
}

shinyApp(ui = ui, server = server)

示例:

【问题讨论】:

  • 我不完全确定您在寻找什么或您的问题是什么,但我认为您的“Output2”和“Output3”选项卡面板没有显示,对吗?如果是这样,只需用 tabsetPanel 包装它们:tabstPanel(tabPanel("Output2",uiOutput('daterange')), tabPanel("Output3"))
  • 括号闭合不正确。尝试tabsetPanel(tabPanel(...), tabPanel(...)) - 按照其他人的建议。

标签: r shiny


【解决方案1】:

试试这个:

column(8, "",
  tabsetPanel(
    tabPanel("Output1", plotOutput("graph",width = "100%", height = "600")),
    tabPanel("Output2",uiOutput('daterange')),
    tabPanel("Output3")
    )
  )

【讨论】:

    【解决方案2】:

    @Silentdevildoll 的反馈似乎可以满足您的需求。再加上你在 UI 中调用了 fluidPage() 和 navbarPage() 两次。此外,您已将对象“ui”分配了两次

    library(shiny)
    library(shinythemes)
    library(dplyr)
    
    function.test<-function(){
      
      df1 <- structure(
        list(date= c("2021-06-28","2021-06-28","2021-06-28"),
             Category = c("ABC","ABC","ABC"),
             Week= c("Wednesday","Wednesday","Wednesday"),
             DR1 = c(4,1,0),
             DR01 = c(4,1,0), DR02= c(4,2,0),DR03= c(9,5,0),
             DR04 = c(5,4,0),DR05 = c(5,4,0),DR06 = c(5,4,0),DR07 = c(5,4,0),DR08 = c(5,4,0)),
        class = "data.frame", row.names = c(NA, -3L))
      
      
      
      return(df1)
    }
    
    
    ui <-
      shiny::navbarPage(theme = shinytheme("flatly"),
                        collapsible = TRUE,
                        br(),
                        tabPanel(title = "First Panel",
                                 fluidRow(
                                   br(), 
                                   br(),
                                   column(width = 4, "",
                                          wellPanel(
                                            uiOutput("date"),
                                            uiOutput("mycode")
                                          ), #close wellPanel
                                          wellPanel(
                                            conditionalPanel(
                                              condition = "output.mycode",
                                              actionButton("reset", "Reset")
                                            ) #close conditionalPanel
                                          ) #close wellPanel
                                   ), #close column
                                   column(width = 8, "",
                                          tabsetPanel(
                                            tabPanel("Output1",
                                                     plotOutput("graph", width = "100%", height = "600"),
                                                     tabsetPanel(
                                                       tabPanel("Output2",
                                                                uiOutput('daterange')),
                                                       tabPanel("Output3")
                                                     ) # close tabsetPanel
                                            ) #close tabPanel
                                          ) # close tabsetPanel
                                   ) #close column
                                 ) #close fluidRow
                        ) #close tabPanel
      ) #close NavPage
    
    
    server <- function(input, output,session) {
      
      data <- reactive(function.test())
      
      
      output$date <- renderUI({
        req(data())
        all_dates <- seq(as.Date('2021-01-01'), as.Date('2021-01-15'), by = "day")
        disabled <- as.Date(setdiff(all_dates, as.Date(data()$date2)), origin = "1970-01-01")
        dateInput(input = "date2",
                  label = h4("Data"),
                  min = min(data()$date2),
                  max = max(data()$date2),
                  value = NA,
                  format = "dd-mm-yyyy",
                  datesdisabled = disabled)
        
      })
      
      
      output$daterange <- renderUI({
        tagList(dateRangeInput("daterange1", "",
                               start = min(data()$date),
                               end   = max(data()$date),
                               min   = min(data()$date),
                               max   = max(data()$date),
                               format = "dd-mm-yyyy"))
      })         
      
      
      
      observeEvent(input$reset, {
        req(input$date2)
        df1 <- data()
        my$plot <- NULL
        updateDateInput(session, 'date2', value = NA)
        updateSelectInput(session, 'code', h4("Category"),choices= unique(df1$Category), selected=character(0))
      })
      
    }
    
    shinyApp(ui = ui, server = server)
    

    【讨论】:

    • 感谢您的回答,但如果可能的话,我希望输出 2 和输出 3 在输出 1 侧。我在上面插入了一个例子给你看
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 2015-08-11
    • 2021-01-27
    • 2016-08-23
    • 2014-06-25
    • 2021-03-04
    相关资源
    最近更新 更多