R Shiny - отображение статического текста вне боковой панели - PullRequest
0 голосов
/ 27 сентября 2018

Я хочу отображать статический текст вне боковой панели в Shiny.Я могу отобразить текст внутри боковой панели.Тем не менее, если я пытаюсь отобразить текст за пределами боковой панели, я получаю эту ошибку: «Ошибка в match.arg:« arg »должен быть NULL или символьный вектор».

Ниже приведен пример кода, которыйотображает предложение «Это статический текст» внутри боковой панели.Я хочу отобразить текст «чуть ниже» боковой панели, но не внутри окна панели.

Код ниже дает мне этот вывод:

this output но я хочу, чтобы это выглядело так:

like this Как мне этого добиться?

library(shiny)

# Define UI for application that draws a histogram
ui <- fluidPage(

   # Application title
   titlePanel("Old Faithful Geyser Data"),

   # Sidebar with a slider input for number of bins 
   sidebarLayout(
      sidebarPanel(
         sliderInput("bins",
                     "Number of bins:",
                     min = 1,
                     max = 50,
                     value = 30),
         h5("This is a static text")
      ),

      # Show a plot of the generated distribution
      mainPanel(
         plotOutput("distPlot")
      )
   )
)

# Define server logic required to draw a histogram
server <- function(input, output) {

   output$distPlot <- renderPlot({
      # generate bins based on input$bins from ui.R
      x    <- faithful[, 2] 
      bins <- seq(min(x), max(x), length.out = input$bins + 1)

      # draw the histogram with the specified number of bins
      hist(x, breaks = bins, col = 'darkgray', border = 'white')
   })

}

# Run the application 
shinyApp(ui = ui, server = server)

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Один вариант: вы вообще не можете использовать sidebarLayout(), а просто определите свои собственные стили shiny-input-container (см. этот ответ для получения дополнительных примеров настройки стилей компонента ползунка).Затем вы можете создавать более сложные компоновки виджетов ввода, текста и графиков с вложенностью fluidRow() и column() ( пример ).

library(shiny)

# Define UI for application that draws a histogram
ui <- fluidPage(

  #CSS Styles
  tags$style(HTML(
    paste0(".shiny-input-container {background-color: #f5f5f5; border: 1px solid #e3e3e3;",
           "padding-left: 10px; padding-right: 10px; border-radius: 3px;}")
           )),

  # Application title
  titlePanel("Old Faithful Geyser Data"),

  #use column to mimic sidebarPanel
  column(
    width = 4,
    sliderInput("bins",
                "Number of bins:",
                min = 1,
                max = 50,
                value = 30),    
    hr(),
    h5("This is a static text")
  ),

  #use column to mimic main panel
  column(
    width = 8,
    plotOutput("distPlot")
  )

)

# Define server logic required to draw a histogram
server <- function(input, output) {

  output$distPlot <- renderPlot({
    # generate bins based on input$bins from ui.R
    x    <- faithful[, 2] 
    bins <- seq(min(x), max(x), length.out = input$bins + 1)

    # draw the histogram with the specified number of bins
    hist(x, breaks = bins, col = 'darkgray', border = 'white')
  })

}

# Run the application 
shinyApp(ui = ui, server = server)

Создано в 2018-09-28 представьте пакет (v0.2.1)

0 голосов
/ 28 сентября 2018

Функция sidebarPanel поместит все в form с классом well.Одно из хакерских решений (может быть, есть и лучшее) состоит в создании пользовательской функции siderbarPanel для размещения элементов вне form.Ниже приведен ваш код с функцией sidebarPanel2, которая является просто настройкой исходной функции для помещения элемента «чуть ниже».Вы можете поместить что угодно, не только текст.

library(shiny)

sidebarPanel2 <- function (..., out = NULL, width = 4) 
{
  div(class = paste0("col-sm-", width), 
    tags$form(class = "well", ...),
    out
  )
}

# Define UI for application that draws a histogram
ui <- fluidPage(
  # Application title
  titlePanel("Old Faithful Geyser Data"),
  # Sidebar with a slider input for number of bins 
  sidebarLayout(
    sidebarPanel2(fluid = FALSE,
      sliderInput("bins",
                 "Number of bins:",
                 min = 1,
                 max = 50,
                 value = 30),
      out = h5("This is a static text")
    ),
    # Show a plot of the generated distribution
    mainPanel(
      plotOutput("distPlot")
    )
  )
)

# Define server logic required to draw a histogram
server <- function(input, output) {
   output$distPlot <- renderPlot({
      # generate bins based on input$bins from ui.R
      x    <- faithful[, 2] 
      bins <- seq(min(x), max(x), length.out = input$bins + 1)
      # draw the histogram with the specified number of bins
      hist(x, breaks = bins, col = 'darkgray', border = 'white')
   })
}

# Run the application 
shinyApp(ui = ui, server = server)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...