2013-03-13 49 views
0

我预测利润的数据集进行了大量的行业,即 每个行业我有形式D3矩形插值

var data = [{'confidence': 0.0, 'rule': 'Agriculture', 'value': 45}, 
{'confidence': 0.052631578947368418, 'rule': 'Agriculture', 'value': 46}, 
{'confidence': 0.10526315789473684, 'rule': 'Agriculture', 'value': 47}, 
{'confidence': 0.15789473684210525, 'rule': 'Agriculture', 'value': 48}, 
{'confidence': 0.36842105263157893, 'rule': 'Agriculture', 'value': 52}, 
{'confidence': 0.73684210526315785, 'rule': 'Information', 'value': 59}, 
{'confidence': 0.78947368421052633, 'rule': 'Machine Learning', 'value': 60}, 
{'confidence': 0.84210526315789469, 'rule': 'Machine Learning', 'value': 61}, 
{'confidence': 0.89473684210526305, 'rule': 'Machine Learning', 'value': 62}, 
{'confidence': 0.94736842105263153, 'rule': 'Machine Learning', 'value': 63}]; 

我需要重新在D3以下情节的概率分布.js,其中每个密度绘制为 作为条形图,其中线性色阶描述了概率。

Example visualization

我尝试迄今已包括每一个给定的点绘制身高1的矩形元素:

var rect = svg.selectAll("rect") 
       .data(data) 
       .enter() 
       .append("rect") 
       .attr("x", function(d, i) { 
        return x(d.rule) + margin.left; 
       }) 
       .attr("y", function(d, i) { 
        return y(d.value) 
       }) 
       .attr("width", 100) 
       .attr("height", 1) // change this ! 
       .style("fill", function(d, i) { 
        return color(d.confidence); 
       }); 

正如你可以看到这类作品的下面,但我现在需要以某种方式插入react 以获得更加流畅的可视化。

unsmoothed

我怎样才能做到这一点(或者干脆是我在错误的道路上)?

回答

1

做你想做的一种方法是使用SVG gradients。对于每个栏,您可以定义一个带有与您的置信度值相对应的止损的梯度(与您现在生成矩形的生成方式大致相同)。然后,你所要做的就是绘制矩形,并将梯度分配为各自的填充。

我已经使用这种技术来填充“行”here

+0

这很好。 – kyrre 2013-03-22 15:55:43