我对使用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'} !#")
但'事件'决定了我的情况。
答案 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