使用链式转换时强制y轴为0

时间:2013-05-03 21:08:31

标签: d3.js transitions

我是D3的新手,正在研究链式转换的修改版本:http://bl.ocks.org/mbostock/3903818

然而,我遇到的一个问题是强制y轴从0开始。通常,在声明其他变量但在转换函数的上下文中更改y域和范围属性时,这将是简单的修复,我遇到了问题。以下是代码:http://jsfiddle.net/maureenlinke/DCc6g/

我相信问题在这里:

x.domain(d3.extent(data,function(d){return d.date;}));

y.domain([
  d3.min(homes, function(c) { return d3.min(c.values, function(v) { return v.price; }); }),
  d3.max(homes, function(c) { return d3.max(c.values, function(v) { return v.price; }); })
  ]);

谢谢,

莫林

2 个答案:

答案 0 :(得分:0)

您只需要修复域名:

var maxPrice = d3.max(homes, function(c) { 
    return d3.max(c.values, function(v) { return v.price; }); 
});
y.domain([0, maxPrice]);

答案 1 :(得分:0)

d3.extent函数以数组[min,max]的形式返回数据的最小/最大范围。

通常,您需要编写以下代码:

y.domain( d3.extent(homes, function(d) { return d.price; }) );

所以以下内容应该有效:

var yRange = d3.extent(homes, function(d) { return d.price; });
y.domain( [0, yRange[1] ); // Force the min to 0