css – 在R闪亮页面中显示/隐藏侧边栏后,绘图不会调整大小100%的宽度

前端之家收集整理的这篇文章主要介绍了css – 在R闪亮页面中显示/隐藏侧边栏后,绘图不会调整大小100%的宽度前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个在R Shiny的双面板页面的主面板中设置为100%宽度(默认)的图。侧边栏可以通过切换操作按钮进行隐藏。

侧边栏可见(默认)时,该图填充主面板的宽度。当侧边栏被隐藏时,我想让情节扩展到现在可用空间的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标签$ head(标签$ style(“#myplot {height:100vh!important;}”))从这个问题,Scaling shiny plots to window height

可能的解决方法

>使图形的宽度动态,并根据切换按钮的状态。然后我可以让剧情例如侧边栏隐藏时宽度为140%。这并不普遍,并且失去了使用fluidPage的适应性的要点。

(fluidPage根据浏览器窗口大小更改布局,例如,如果您将浏览器窗口关于手机的大小,则会将侧边栏放在主面板上方。)

解决方法

这样做的一个方法是使用反应式布局(有很多问题,例如 Switch between layouts reactively with shiny)。在你的情况下,会是这样的
library(shiny)
library(shinyBS)

UI <- shinyUI(
        fluidPage(
            bsButton("showpanel",uIoUtput('ui')
        )
    )

SERVER <- function(input,output) {

    output$ui <- renderUI({
        if (input$showpanel) {
            sidebarLayout(
                sidebarPanel("This is my sidebar."),mainPanel(plotOutput('plot'))
            )
        } else {
            plotOutput('plot')
        }
    })

    output$plot <- renderPlot({
        plot(1:10,main = "The width of this plot adjusts\nto window resizes and to\nshow/hide sidepanel!")
    })
}

runApp(shinyApp(UI,SERVER))

猜你在找的CSS相关文章