Приложение Layout shiny для установки высоты элементов, чтобы добавить до 100% размера окна

#r #shiny

#r #блестящий

Вопрос:

учитывая пример приложения Shiny по умолчанию, я хотел бы адаптировать размер трех графиков таким образом, чтобы они заполняли высоту окна. Мой текущий результат выглядит следующим образом.

введите описание изображения здесь

 library(shiny)

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

# 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)
    ),

    # Show a plot of the generated distribution
    mainPanel(
        plotOutput("distPlot"),
        plotOutput("distPlot2"),
        plotOutput("distPlot3")
    )
)
)
# 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')
})

output$distPlot2 <- 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')
})

output$distPlot3 <- 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)
  

Как вы можете видеть из кода, должен быть виден третий график.

Заранее спасибо

Ответ №1:

Добавьте аргумент высоты к вашему plotOutput s с 30vh помощью (высота по вертикали, по существу, % контейнера). Вы можете изменить значение, чтобы получить его именно там, где вы хотите. Подробнее vh здесь.

     # Show a plot of the generated distribution
    mainPanel(
        plotOutput("distPlot", height = '30vh'),
        plotOutput("distPlot2", height = '30vh'),
        plotOutput("distPlot3", height = '30vh')
    )
  

Вывод