У меня есть сгруппированная столбчатая диаграмма, как показано на этом изображении,http://pasteboard.co/1BKMicBq.jpg Я хочу сложить сумму соответствующих баров, как на изображении. У меня есть набор данных с суммированными значениями, готовыми к отображению, который выглядит так:
var months= [
{ "key": "Jan",
"values[0]": 25000,
"values[1]": 25000,
"values[3]": 25000
}, { "key": "Feb",
"values[0]": 25000,
"values[1]": 25000,
"values[3]": 25000
},
{ "key": "March",
"values[0]": 25000,
"values[1]": 25000,
"values[3]": 25000
}
]
Я пробовал это со следующим кодом, но я не могу получить данные по каждому бару.
var project_stackedbar = svg.selectAll(".project_stackedbar")
.data(data)
.enter().append("g")
.attr("class", "g")
.attr("transform", function (d) { return "translate(" + x0(d.Month) + ",0)"; });
project_stackedbar.selectAll("rect")
.data(function (d) { return d.columnDetails; })
.enter()
.append("rect")
.attr("width", x1.rangeBand())
.attr("x", function (d) {
return x1(d.column);
})
.attr("y", function (d) {
return y(d.yEnd);
})
.attr("height", function (d) {
return y(d.yBegin) - y(d.yEnd);
})
.style("fill", function (d) { return color(d.name); });
var sum = 0;
project_stackedbar.selectAll("text")
.data(function (d) { return d.columnDetails; })
.enter()
.append("text")
.attr("x", function (d) { return x1(d.column) })
.attr("y", function (d) {
return y(d.yEnd) + 15;})
.text(function (d) {if (d.yEnd - d.yBegin !== 0) return "$" + (d.yEnd - d.yBegin);});
columns = svg.append("g")
.selectAll("text")
.data(months)
.enter().append("text")
.attr("x", function (d) {
return (x1(d.column));
})
.attr("y", function (d, i) {
return y(d.values[i]) - 60;
})
.attr("dy", "1.35em")
.attr('style', 'font-size:13px')
.text(function (d, i) {
if (d.values !== 0) return d3.format("$")(d.values[i]);
})
.style({ fill: 'black', "text-anchor": "middle" });
Здесь я могу получить только 3 значения, которые будут напечатаны в первой группе столбцов. Я не могу получить правильное положение оси x на графике. может ли кто-нибудь направить меня сюда, я ошибаюсь?