R Shiny'ta iki panelli bir sayfanın ana panelinde% 100 genişliğe (varsayılan) ayarlanmış bir çizimim var. Kenar çubuğu bir geçiş eylem düğmesiyle gizlenebilir.Grafik, R parlak sayfasındaki göster/gizle kenar çubuğundan sonra% 100 genişlik boyutunu yeniden boyutlandırmıyor
Kenar çubuğu görünür olduğunda (varsayılan), grafik ana panelin genişliğini doldurur. Kenar çubuğu gizlendiğinde, arsa artık kullanılabilir alanın% 100'ünü, yani tüm tarayıcı penceresini doldurmak için genişletmeyi istiyorum. Ama bu olmaz! Aynı büyüklüğü koruyor.
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))
bugüne kadar çalışıldı:
- yukarıdaki gibi UI dosyası içinden arsa nesneyi tanımlama.
- Grafik nesnesini, render dosyasından bir renderUI nesnesi olarak tanımlamak.
- CSS etiketini
tags$head(tags$style("#myplot{height:100vh !important;}"))
numaralı sayfaya göre bu sorudan, Scaling shiny plots to window height olarak ayarlayın.
Olası alternatif çözüm:
- dinamik ve geçiş butonu durumuna bağlı olarak arsa genişliğini olun. Sonra arsa yapabilirim, ör. Kenar çubuğu gizlendiğinde% 140 genişlik. Bu iyi genelleme yapmaz ve
fluidPage
'un uyumluluğunu kullanma noktasını kaybeder.
(fluidPage
tarayıcı penceresi boyutu bağımlı düzenini değiştirir. Örneğin, bir cep telefonu büyüklüğünde tarayıcı penceresini yaparsanız, ana panelin üstünde kenar çubuğu yerleştirir.)
Sorun şu ki, kenar çubuğunu kullanarak iki bootstrap sütun oluşturuyorsunuz: biri kenar çubuğu için "col-sm-4" sınıfı ve çizim için "col-sm-8" sınıfı ile bir tane oluşturuyorsunuz. ekranın% 66'sından daha büyük boyut. –