【问题标题】:rCharts nvd3 multibar chartrCharts nvd3 多条形图
【发布时间】:2014-06-25 18:59:37
【问题描述】:

我对使用 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'} !#")

但在我的情况下,“事件”决定了颜色。

【问题讨论】:

    标签: r shiny nvd3.js rcharts


    【解决方案1】:

    我做了一些假设,我想我理解你想要达到的结果。让我知道这样的事情是否有效。它使用 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
    

    【讨论】:

    • 那行得通。我附加了颜色并像这样访问它,但你的功能似乎是标准的。 p2$chart(color = "#! function(d, x){ var color = d.Var1; return color.split(':')[1];} !#")
    • 我不确定我是否理解。你擅长这个还是寻找其他东西?我很乐意展示替代解决方案。
    猜你喜欢
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    • 2014-03-27
    • 1970-01-01
    • 2017-03-29
    • 2015-05-27
    相关资源
    最近更新 更多