我的数据采用嵌套的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.extent
和atime
的{{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]