У меня есть график, который установлен на 100% ширину (по умолчанию) на главной панели страницы с двумя панелями в R Shiny. Боковая панель скрыта с помощью кнопки переключения.
Когда боковая панель видима (по умолчанию), сюжет заполняет ширину основной панели. Когда боковая панель скрыта, я хочу, чтобы график расширялся, чтобы заполнить 100% доступного пространства, то есть всего окна браузера. Но этого не бывает! Он поддерживает одинаковый размер.
library(shiny)
library(shinyBS)
UI <- fluidPage(
bsButton("showpanel", "Show/hide sidebar", type = "toggle", value = TRUE),
sidebarLayout(
conditionalPanel(condition = "input.showpanel == true",
sidebarPanel("This is my sidebar.")
),
mainPanel(plotOutput("plot", width = "100%"))
)
)
SERVER <- function(input, output) {
output$plot <- renderPlot({
plot(1:10, main = "The width of this plot adjusts\nto window resizes but not to\nshow/hide sidepanel!")
})
}
runApp(shinyApp(UI,SERVER))
Попытка до сих пор:
- Определение объекта сюжета из файла UI, как указано выше.
- Определение объекта plot из файла сервера, как объекта renderUI.
- Задайте тег CSS на странице по
tags$head(tags$style("#myplot{height:100vh !important;}"))из этого вопроса Масштабирование блестящих графиков до высоты окна.
Возможные обходы:
- Сделайте ширину графика динамическим и в зависимости от состояния кнопки переключения. Затем я могу сделать сюжет, например. Ширина 140% при скрытой боковой панели. Это не очень хорошо обобщает и теряет смысл использования адаптивности
fluidPage.
(fluidPage изменяет макет, зависящий от размера окна браузера. Например, если вы сделаете окно своего браузера о размере мобильного телефона, он поместит боковую панель над основной панелью.)