【问题标题】:Shiny rcharts multiple chart outputShiny rcharts 多个图表输出
【发布时间】:2014-03-20 15:49:05
【问题描述】:

如何使用闪亮和 rchart 运行多个图表来覆盖输出显示选项,以便输出结果是 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)
    })
  }
))

【问题讨论】:

    标签: r rcharts shiny-server


    【解决方案1】:

    将用户界面更改为:

    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 告诉闪亮使用引导库。查看http://getbootstrap.com/2.3.2/scaffolding.html 以了解“脚手架”。 mainPanel 有一个宽度选项,默认为 8。 这是 bootstrap 中的 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 的一个便利函数。

    结果截图:

    【讨论】:

    • 谢谢你,真的很有帮助。在闪亮的一面,mainPanel 是否单独扩展到全屏?或者您是否必须使用诸如 sidePanel 之类的东西,但将跨度更改为诸如 span6 之类的东西以用于 sidePanel 和 MainPanel?
    • mainPanel 基本上只是设置一个 div 和一个选项 width 来设置跨度。如果您更改 mainPanel 添加选项 width = 12 并将内部 div 上的类更改为 span6 您应该得到您想要的。
    • @jdharrison,在您允许的情况下添加了结果截图,很好!
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-01-15
      • 1970-01-01
      • 1970-01-01
      • 2015-12-25
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      • 2019-07-21
      相关资源
      最近更新 更多