我有一个D3.js图表,当(a)有多个数据元素要图表时,以及(b)如果有正数和负数的混合,但我有问题,如果它打破了这些规则中的任何一个。
我认为问题可能在于如何计算y域,或者如何使用d3.scale.linear()计算y比例。
我已经创建了一个jsfiddle项目来显示问题。 Javascript面板顶部有三个数据集 - 如果你在/ out中注释数组,你可以看到问题:
//data = [["A",-1],["B",2]]; //this works
data = [["A",1],["B",2]]; //this doesn't work - 0 scale is off when
//both are positive
//data = [["A",-1]]; //this does not work - with only element it
//does not show up
感谢您的帮助 - fc
答案 0 :(得分:0)
听起来你需要对你的程度进行一些检查:
var extent = d3.extent(data, function(d){return d[1]});
extent[0] = extent[0] > 0 ? 0 : extent[0];
extent[1] = extent[1] < 0 ? 0 : extent[1];
yScale
.domain(extent)
.range([height - margin.top - margin.bottom, 0])
.nice();
更新fiddle。