R Shiny-如何使用列2中的嵌套行生成此布局 [英] R Shiny - how to generate this layout with nested rows in column 2

查看:165
本文介绍了R Shiny-如何使用列2中的嵌套行生成此布局的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在"Fluid9"下有两行,但是这行不通.第一行应具有三个图,而第二行应仅具有一个图,跨越第一行中三个图的宽度(9).我想念什么?

I'd like to have two rows under "Fluid9" and this isn't working. The first row should have three plots whereas the second row should only have 1 plot spanning the width (9) of the 3 plots in the first row. What am I missing?

我正在尝试获取类似布局的内容(请参见下面的第二张图片),除了不需要左侧的滑块.

I'm trying to get something like this layout (see 2nd image below), except that i don't need the sliders on the left side.

ui <- shinyUI(fluidPage(
  fluidRow(
    column(12,
      "Fluid12",
         fluidRow(
           column(3,
             "Fluid3",
             numericInput('H_lbv', 'Height - lower bound', 10),
             numericInput('H_ubv', 'Height - upper bound', 21),
             numericInput('D_lbv', 'Diam. - lower bound', 8),
             numericInput('D_ubv', 'Diam. - upper bound', 16),
             numericInput('ro_lbv', 'Dens. - lower bound', 0.3),
             numericInput('ro_ubv', 'Dens. - upper bound', 1.0)
             ),
           column(width = 9,
               "Fluid9",
               fluidRow(
                       column(3,
                              plotOutput("plot")),
                       column(width=3,
                              plotOutput("plot2")),
                       column(width=3,
                              plotOutput("plot3"))
               ), fluidRow( ## I thought this would work to add the second row
                       column(width=9,
                              plotOutput("plot3"))
               )
           )
         )  
      )
  )
 )
)

服务器代码:

server <- function(input, output) {    

        xseq <- reactive({
                x1 <- input$H_lbv - (input$H_ubv - input$H_lbv)/2 # set my x-axis left bound
                x2 <- input$H_ubv + (input$H_ubv - input$H_lbv)/2 # set my x-axis right bound
                # return
                seq(x1, x2, 0.01)
        })

        densities <- reactive({
                dpar <- get.norm.par(p = c(lb, ub), q = c(input$H_lbv, input$H_ubv), plot = FALSE)
                mean <- dpar[1]
                sd <- dpar[2]
                # return
                dnorm(xseq1, mean, sd)
        })        
        densities2 <- reactive({
                dpar2 <- get.norm.par(p = c(lb, ub), q = c(input$D_lbv, input$D_ubv), plot = FALSE)
                mean2 <- dpar2[1]
                sd2 <- dpar2[2]
                # return
                dnorm(xseq2, mean2, sd2)
        })        
        densities3 <- reactive({
                dpar3 <- get.norm.par(p = c(lb, ub), q = c(input$ro_lbv, input$ro_ubv), plot = FALSE)
                mean3 <- dpar3[1]
                sd3 <- dpar3[2]
                # return
                dnorm(xseq3, mean3, sd3)              
        })

        output$plot <- renderPlot({
                plot(xseq1, densities(),
                     col = "darkgreen", xlab="", ylab="Density", type="l",lwd=2, cex=2,
                     main="Height", cex.axis=.8)
        })
        output$plot2 <- renderPlot({
                plot(xseq2, densities2(),
                     col = "darkgreen", xlab="", ylab="Density", type="l",lwd=2, cex=2,
                     main="Diameter", cex.axis=.8)
        })
        output$plot3 <- renderPlot({
                plot(xseq3, densities3(),
                     col = "darkgreen", xlab="", ylab="Density", type="l",lwd=2, cex=2,
                     main="Packing Density", cex.axis=.8)
        })
}

shinyApp(ui = ui, server = server)

推荐答案

在新的fluidRow中,新的最大宽度变为12(始终嵌套).因此,您需要将三列的宽度从width = 3更改为width = 4,并将最后一列从width = 9更改为width = 12.

Within your new fluidRow, the new max width becomes 12 (it's always nested). So you need to change the width of the three columns from width = 3 to width = 4, and change the last column from width = 9 to width = 12.

       column(width = 9,
           "Fluid9",
           fluidRow(
                   column(width=4,
                          plotOutput("plot")),
                   column(width=4,
                          plotOutput("plot2")),
                   column(width=4,
                          plotOutput("plot3"))
           ), fluidRow( ## I thought this would work to add the second row
                   column(width=12,
                          plotOutput("plot3"))
           )
       )
     )  
  )

这篇关于R Shiny-如何使用列2中的嵌套行生成此布局的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆