代码之家  ›  专栏  ›  技术社区  ›  digdeep

Shiny rcharts多图表输出

  •  6
  • digdeep  · 技术社区  · 11 年前

    我如何通过运行多个图表来覆盖输出显示选项,以使输出结果为2x2矩阵型网格布局。

    require(rCharts)
    require(shiny)
    require(data.table)
    runApp(list(
      ui = mainPanel( span="span6", 
        showOutput("chart2", "Highcharts"),
        showOutput("chart3", "Highcharts"),
        showOutput("chart4", "Highcharts")
        ),
      server = function(input, output){
          output$chart3 <- renderChart({
          a <- hPlot(Pulse ~ Height, data = MASS::survey, type = "bubble", title = "Zoom demo", subtitle = "bubble chart", size = "Age", group = "Exer")
          a$chart(zoomType = "xy")
          a$chart(backgroundColor = NULL)
          a$set(dom = 'chart3')
          return(a)
        })
        output$chart2 <- renderChart({
          survey <- as.data.table(MASS::survey)
          freq <- survey[ , .N, by = c('Sex', 'Smoke')]
          a <- hPlot(x = 'Smoke', y = 'N', data = freq, type = 'column', group = 'Sex')
          a$chart(backgroundColor = NULL)
          a$set(dom = 'chart2')
          return(a)
        })
        output$chart4 <- renderChart({
          survey <- as.data.table(MASS::survey)
          freq <- survey[ , .N, by = c('Smoke')]
          a <- hPlot(x = "Smoke", y = "N", data = freq, type = "pie")
          a$plotOptions(pie = list(size = 150))
          a$chart(backgroundColor = NULL)
          a$set(dom = 'chart4')
          return(a)
        })
      }
    ))
    
    2 回复  |  直到 11 年前
        1
  •  6
  •   PatrickT    10 年前

    将ui更改为:

    ui = bootstrapPage(mainPanel( 
          div(class = "row",
            div(showOutput("chart2", "Highcharts"), class = "span4"),
            div(showOutput("chart3", "Highcharts"), class = "span4")
          ),
          div(class = "row",
            div(showOutput("chart4", "Highcharts"), class = "span4")
          )
        ))
    

    添加 bootstrapPage 告诉shing使用引导库。看看 http://getbootstrap.com/2.3.2/scaffolding.html 了解“脚手架”的概念。 mainPanel 具有默认为8的宽度选项。 这是引导中的span8。 上面的代码并不理想,但希望它是一个开始。

    编辑:用于全屏

    ui = bootstrapPage(mainPanel(width = 12,  
          div(class = "row",
            div(showOutput("chart2", "Highcharts"), class = "span6"),
            div(showOutput("chart3", "Highcharts"), class = "span6")
          ),
          div(class = "row",
            div(showOutput("chart4", "Highcharts"), class = "span6")
          )
        ))
    

    注意,mainPanel(…,width=width)只是宽度跨度为的div的一个方便函数。

    结果截图:

    enter image description here

        2
  •  1
  •   Steven_    9 年前

    R Shiny的另一个解决方案(没有HTML的外部知识)是使用列的思想。

    ui = mainPanel(fluidPage(
        fluidRow(
          column(width=6, 
                 showOutput("chart2", "Highcharts"),
                 showOutput("chart3", "Highcharts")
        ),
        fluidRow(
          column(width=6, 
                 showOutput("chart4", "Highcharts") 
            )
          )
        )
      )),