Я пытаюсь изменить размеры своих ggplots, но значение их высоты не меняется, используя height = as.numeric(input$dimension[1])
in renderPlot
в качестве наблюдателя.
Я хотел бы отобразить в двух жидких строках (по 1/2 высоты экрана каждый ) 3 графика (Box2, Box3, Box4) в части третьей высоты первого ряда и Box5 на 100% высоты второй муфты.
Экран моего тела должен выглядеть следующим образом (без прокрутки) ):
library(ggplot2)
library(shiny)
library(shinyjs)
library(shinydashboard)
bar <- ggplot(data=iris, aes(x=Species)) + geom_bar()
ui <- shinyUI(
dashboardPage(
header = dashboardHeader(),
sidebar = dashboardSidebar(),
body = dashboardBody(
tags$head(tags$script(
'var dimension = [0, 0];
$(document).on("shiny:connected", function(e) {
dimension[0] = window.innerWidth;
dimension[1] = window.innerHeight;
Shiny.onInputChange("dimension", dimension);
});
$(window).resize(function(e) {
dimension[0] = window.innerWidth;
dimension[1] = window.innerHeight;
Shiny.onInputChange("dimension", dimension);
});'
)),
fluidRow(
column(
width = 6,
fluidRow(
box("Box1", width = 12, background = "aqua")
)
),
column(
width = 6,
fluidRow(
box(width = 12, height = "auto", plotOutput("Box2", width = "auto", height = "auto"))
),
fluidRow(
box(width = 12, plotOutput("Box3", width = "auto", height = "auto"))
),
fluidRow(
box(width = 12, plotOutput("Box4", width = "auto", height = "auto"))
)
)
),
fluidRow(
column(
width = 12,
fluidRow(
box(width = 12, plotOutput("Box5", width = "auto", height = "auto"))
)
)
)
)
)
)
server <- shinyServer(function(input, output){
observe(
output$Box2 <- renderPlot(
bar,
height = as.numeric(input$dimension[1]) * 1/ 2 * 1 / 3
)
)
observe(
output$Box3 <- renderPlot(
bar,
height = as.numeric(input$dimension[1]) * 1/ 2 * 1 / 3
)
)
observe(
output$Box4 <- renderPlot(
bar,
height = as.numeric(input$dimension[1]) * 1/ 2 * 1 / 3
)
)
observe(
output$Box5 <- renderPlot(
bar,
height = as.numeric(input$dimension[1]) * 1/ 2 * 1
)
)
})
shinyApp(ui=ui,server=server)