如何为所有负值的水平d3条形图设置x和y域?对于所有正值的条形图,域名将为:
x.domain([0, d3.max(data, function (d) {
return Math.abs(d.value);
})]);
y.domain(data.map(function (d) {
return d.dataset;
}));
对于正值和负值的条形图,域名为:
x.domain(d3.extent(data, function (d) {
return d.value;
}));
y.domain(data.map(function (d) {
return d.dataset;
}));
但是当条形图具有所有负值时,我无法做到正确。
感谢您的考虑。
答案 0 :(得分:0)
你正在做不正确的边缘,以及其他一些事情。
https://jsfiddle.net/fmr1x1gu/7/
var margin = {top: 30, right: 10, bottom: 50, left: 50},
width = 500 - margin.left - margin.right,
height = 300 - margin.top - margin.bottom;
svg.selectAll(".bar")
.data(data)
.enter().append("rect")
.attr("class", function (d) {
return "bar bar--" + (d.value < 0 ? "negative" : "positive");
})
.attr("x", function (d) {
return width - x(d.value);
})
.attr("y", function (d) {
return y(d.dataset);
})
.attr("width", function (d) {
return x(d.value);
})
.attr("height", y.bandwidth());