我有大量行业的预测利润数据集,即 对于每个行业,我都有表格的概率分布
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中重新创建以下图表,其中每个密度都被绘制为 作为条形图,线性色标描述概率。
到目前为止,我的尝试包括将每个给定点绘制为高度为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);
});
正如你在下面看到的这种作品,但我现在需要以某种方式插入rects 以获得更平滑的可视化。
我怎样才能做到这一点(或者我完全走错了路?)
答案 0 :(得分:1)
实现目标的一种方法是使用SVG gradients。对于每个条形,您将定义一个带有与您的置信度值相对应的停靠点的渐变(生成方式与您现在生成rects的方式大致相同)。然后你所要做的就是绘制rects并将渐变分配为相应的渐变。
我已使用此技术填充“行”here。