d3.js中的最小和最大函数

时间:2014-11-12 16:32:23

标签: d3.js

我的数据采用嵌套的JSON格式。我尝试使用d3.extent函数,但它没有给我结果。

我的数据采用以下格式:

carrier.push({ "level": Number(c[i]), "time": { "atime": new Date(v[i]), "btime": new Date(v1[i]) }

以下是我的代码:

x.domain(d3.extent(carrier, function (d) { return d.time; }));
y.domain(d3.extent(carrier, function (d) { return d.level; }));

当我使用“时间”时,我的情节不起作用。当我使用其中一个嵌套数据(如return d.time.atime)但x轴和y轴刻度不能覆盖整个绘图时,它可以工作。它只涵盖了time.atime部分。那么我有可能获得d3.extentatime的{​​{1}}吗?我搜索了很多,也许是在寻找错误的方向。

1 个答案:

答案 0 :(得分:2)

一种简单的方法是创建两个列表 - 一个是" atimes"和" btimes" - 然后将这些列表中的d3.extent连接起来:

>>> // Some example data
>>> arr = [ {atime: 0, btime: 1}, {atime: 12, btime: -1}, {atime: 7, btime: 3} ]
>>> atimes = arr.map(function(d){ return d.atime })
>>> btimes = arr.map(function(d){ return d.btime })
>>> d3.extent(atimes.concat(btimes))
[-1, 12]

或者作为一个单行:

>>> d3.extent(arr.map(function(d){ return d.atime }).concat(arr.map(function(d){ return d.btime; })))
[-1, 12]