【发布时间】:2016-10-12 11:39:19
【问题描述】:
The docs 用于 d3 的堆叠功能 d3.stack 显示了一个包含对象数组的示例(每个 json 对象代表 x 轴测量的点的集合)。例如:
var data = [
{month: new Date(2015, 0, 1), apples: 3840, bananas: 1920, cherries: 960},
{month: new Date(2015, 1, 1), apples: 1600, bananas: 1440, cherries: 720}
]
我正在尝试使用数据系列矩阵 ([ [], [], [], etc ]) 生成堆叠直方图。遍历行并获得一系列直方图箱很容易(在其他地方预定义了 x 比例和域):
for(let i=0; i<data.length; i++){
bins[i] = d3.histogram()
.domain(x.domain())
.thresholds(x.ticks(10))
(data[i]);
}
并在另一个循环中为每个数据系列创建组:
let bars = this.svg.selectAll(".series" + i)
.data(this.bins[i])
.enter().append("g")
.classed("series" + i, true)
当然,这样做我会卡在这里。我应该如何在该特定系列的正确 x,y 坐标上 bars.append("rect")?换句话说,我现在有一个非常有用的bins 数组,看起来像:
[
[[1,2,3,3], [5,8,9], [10], ... etc], //series0 grouping by bins of 5
[[1,3], [7,7,9,9], [11], ... etc], //series1
[[2,3,3], [8,9], [10,12], ... etc], //series2
...etc
]
有没有办法调用stack 而无需将所有数据转换成 json 键值对?
【问题讨论】:
标签: javascript json d3.js