rCharts - 合并两个像gvisMerge一样的rCharts

3
有没有什么方法可以将两个rCharts组合在一起,类似于gvisMerge(obj1,obj2)?我意识到rCharts对象是函数。有没有办法组合R函数?我正在使用一个shiny应用程序,想要渲染两个rCharts。
 output$chart = renderChart({
 a <- rHighcharts:::Chart$new()
 a$title(text = "Report 1")
 a$xAxis(categories = as.character(df1$Date))
 a$yAxis(title = list(text = "Report 1"))

 a$data(x = df1$Date, y = df1$Val1, type = "line", name = "Values 1")
 a$data(x = df1$Date, y = df1$Val2, type = "column", name = "Values 2")
 a

 b <- rHighcharts:::Chart$new()
 b$title(text = "Report 2")
 b$xAxis(categories = as.character(df2$Week))
 b$yAxis(title = list(text = "Report 2"))

 b$data(x = df2$Week, y = df2$Val3, type = "line", name = "Values 3")
 b$data(x = df2$Week, y = df2$Val4, type = "column", name = "Values 4")
 b
 return(a,b) # Can we combine both and return
 })

在ui.R中:
output$mytabs = renderUI({
  tabs = tabsetPanel(
         tabPanel('Plots', h4("Plots"), chartOutput("chart"))
  })
1个回答

3

如果您正在使用Shiny,我建议使用其布局函数来布置页面,然后将图表放置在所需位置。这是一个最小化的示例(您需要正确设置图表的宽度以避免重叠)

library(shiny)
library(rCharts)

runApp(list(
  ui = fluidPage(
    title = 'Multiple rCharts',
    fluidRow(
      column(width = 5, chartOutput('chart1', 'polycharts')),
      column(width = 6, offset = 1, chartOutput('chart2', 'nvd3'))
    )
  ),
  server = function(input, output){
    output$chart1 <- renderChart2({
      rPlot(mpg ~ wt, data = mtcars, type = 'point')
    })
    output$chart2 <- renderChart2({
      nPlot(mpg ~ wt, data = mtcars, type = 'scatterChart')
    })
  }
))

谢谢您的回答,但我只想发送一个输出。我也在使用rHighcharts。现在我在我的问题中添加了示例数据。 - BigDataScientist
不,renderChart 只返回一个对象。你为什么要只发送一个输出,当你可以发送任意多个呢?其次,rHighcharts 的功能已经被吸收到 rCharts 中,并且未来的开发将在 rCharts 中进行。 - Ramnath
原因是我也从server.R渲染选项卡,我想在一个选项卡中发送多个图。如果有其他方法,请告诉我。很高兴听到这个功能包含在rCharts中。如果您还可以包括像这个http://www.highcharts.com/demo/column-drilldown的钻取功能,那就太好了。 - BigDataScientist
钻取需要明确编写JavaScript代码。可能有一种方法可以抽象出计算,但看起来并不简单。 - Ramnath

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接