The docs https://github.com/d3/d3-shape/blob/master/README.md#stacks对于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)
但当然这样做我会被困在这里。我该怎么办bars.append("rect")
该特定系列的正确 x,y 坐标?换句话说,我有一个非常有用的数组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 键、值对?