rCharts nvd3多栏图表

时间:2014-06-25 18:59:37

标签: r shiny nvd3.js rcharts

我对使用nvd3和rCharts使用细垂直条绘制JVM GC事件感兴趣。示例数据是这样的。所花费的时间以秒为单位。

Event         Date         TimeTakenforEvent

FullGC        1/1/2014        10
GCType1       1/1/2014        30
GCType2       1/1/2014        60
GCType3       1/1/2014        20
GCType4       1/1/2014        70

事件将在R数据帧发生时动态添加。图表是累积的,但每种事件类型都会导致绘制某种颜色的条形图。因此,例如,Full GC事件将绘制蓝条。日期绘制在x轴上,所用时间绘制在y轴上。

我知道如何使用R并将数据添加到数据框中。所以这是关于rChart绘图功能的问题。

我认为解决方案可能是这样的

p2$chart(color = "#! function(d){ return d.y > 12 ? 'red':'blue'} !#")
p2$chart(color = "#! d3.selectAll('rect.nv-bar').style('fill', function(d, i){return d.y > 12 ? 'red':'blue;}  !#")

有人可以指导我吗?

  

更新:我已确定此示例代码有效。

p2 = nPlot(x = "Var1", y = "Freq", data = bpf3, type = "discreteBarChart")
p2$chart(color = "#! function(d){ return d.Freq > 12.0 ? 'red':'blue'} !#")

但'事件'决定了我的情况。

1 个答案:

答案 0 :(得分:0)

我做了一些假设,我想我理解你想要达到的结果。如果这样的话有用,请告诉我。它使用d3' d3.scale.ordinal来提供从事件类型到颜色的转换。如果您需要其他详细信息,请参阅此d3 scale tutorial。让我知道这对你有用。

  require(rCharts)

  bpf3 <- data.frame(
    Var1 = rep(1:20),
    Freq = round(runif(20,1,20)),
    Event = unlist(lapply(1:5,function(x){rep(LETTERS[x],4)}))
  )

  p2 = nPlot(x = "Var1", y = "Freq", data = bpf3, type = "discreteBarChart")
  p2$chart(
    color = "#! function(d){
      var ourColorScale = d3.scale.ordinal().domain(['A','B','C','D']).range(['red','blue','green','purple']);
      return ourColorScale(d.Event);
    }!#")
  p2