У меня работает гистограмма с d3.v3, и я хочу найти процент данных ниже порогового значения. Я пытаюсь получить высоту баров, но это не работает, и я не уверен, что я делаю неправильно.
Вот рабочая JSFiddle .
Вот соответствующий код.
d3.selectAll("rect")
.attr("fill", function(d) {
if (d.x <= (linePosition)) {
return highColorScale(d.y);
} else {
return lowColorScale(d.y);
}
})
.style("stroke", function(d) {
if (d.x <= linePosition) {return lowColorScale(d.y);}
else {return highColorScale(d.y)}
})
.style("stroke-width", "3px")
.attr("class", (function(d) {
if (d.x <= linePosition) {
return 'belowThreshold'
}
})) //Every rect below threshold gets class belowThreshold
updateLegend()
var belows = d3.sum(d3.selecAll('.belowThreshold').attr("height"));
var total = d3.sum(d3.selectAll("rect").attr("height"));
var percentage = (total / belows) * 100 //will replace with d3.format if I ever get it working
//updated legend
function updateLegend() {
d3.selectAll('.legendText').text("x: " + scaledPosition + " " + percentage + "%");
legend.text('scaledPosition')
.attr("class", "legendText, absolute");
}
Любая и вся помощь приветствуется.