2016-10-05 4 views
1

Ich baue eine Shiny-App und möchte in der Lage sein, Eingabe-Widgets zu gruppieren, vorzugsweise mit einem Titel für jede Gruppe. Zum Beispiel möchte ich eine Box für "Hosengröße" mit einem Drop-Down für die Taille und ein Dropdown für die Innennaht, und dann eine andere Box für "T-Shirt-Größe" mit einem Drop-Down für XS/S/M/L/XL und Radio Knöpfe für Unisex/Frauen.Gruppierung von Eingabe-Widgets in Shiny

Gibt es eine Möglichkeit, Gruppen von Widgets in ihre eigenen Boxen zu setzen oder die Standard-Gray-Box aufzubrechen, in die sie alle kommen?

Danke!

Antwort

3

Wenn Sie das Layout fluidPage verwenden möchten und Ihre Frage nur layoutbezogen ist: Meine Idee wäre, diese Widgets in Panels zu "gruppieren" und dann den Stil (CSS) dieser Panels anzupassen. Sie können beispielsweise das Rasterlayout oder das Seitenleistenlayout verwenden.

Beispiel genommen from this post.

library(shiny) 
ui <- shinyUI(fluidPage(
    tags$head(tags$style(
    HTML(' 
     #sidebar, #sidebar2 { 
      border: 1px solid black; 
     } 
     body, label, input, button, select { 
      font-family: "Arial"; 
     }') 
)), 
    titlePanel("Hello Shiny!"), 
    fluidRow(
    column(4, 
      sidebarLayout(
      sidebarPanel(width = 12, id="sidebar", 
          h5("Pants size"), 
          sliderInput("waist", 
             "waist:", 
             min = 1, 
             max = 50, 
             value = 30), 
          sliderInput("inseam", 
             "inseam:", 
             min = 1, 
             max = 50, 
             value = 30) 
      ), 
      mainPanel(width = 0) 
      ) 
      ), 
    column(8,sidebarLayout(
     sidebarPanel(width = 12, id="sidebar2", 
        h5("T-shirt size"), 
        selectInput("waist", 
           "Choose your size:", 
           choices = c("XS","S","M","L","XL")), 
        radioButtons("sex", 
           "sex:", 
           choices = c("unisex","women's")) 
    ), 
     mainPanel(width = 0) 
    )) 
) 
) 
) 
server <- shinyServer(function(input, output) { 
}) 
shinyApp(ui=ui,server=server) 

enter image description here

In diesem Beispiel haben die kritischen Platten zwei IDs sidebar und sidebar2 genannt. Diese IDs werden im obigen CSS-Abschnitt verwendet. Lesen Sie mehr über Panels hier:

Eine weitere Möglichkeit, Boxen zu verwenden shinydashboards ist, lesen Sie mehr darüber hier: https://rstudio.github.io/shinydashboard/structure.html#boxes

+0

Dank! Ich werde mit Shinydashboards gehen, da ich viele Boxen möchte. – MissMonicaE