如果我有3个相似的数据集,并且我希望每个数据集都有不同的比例,而不是轴只是比例,x和y。我应该如何在d3.js范例中创建它?
var test_data = [[1,2,3], [3,4,5], [6,7,8]]
var arrays_groups = d3_main_chart
.slectAll('.array_groups')
.data(test_data)
.enter()
.append('g')
.attr('class', 'array_group');
var group_pints = arrays_groups
.selectAll('.group_rect')
.data(function(d,i) {
return d;
})
.enter()
.append('circle')
.attr('cx', 5)
.attr('cy', function(d){
// y_scale for first array in test_data arrray
})
答案 0 :(得分:0)
我想要这样的东西
var test_data = [[1,2,3], [3,4,5], [6,7,8]]
var scales = test_data.map(function(item){
return d3.scale.linear()
.domain([item[0], item.slice(-1)[0]])
.range([0, 100]);
})
var arrays_groups = d3_main_chart
.selectAll('.array_groups')
.data(test_data)
.enter()
.append('g')
.attr('class', 'array_group');
var group_points = arrays_groups
.selectAll('.group_rect')
.data(function(d,i) {
return d.map(function(item) {
return [item, i];
})
})
.enter()
.append('circle')
.attr('cx', 5)
.attr('cy', function(d){
var selected_scale = scales[d[1]];
return selected_scale(d[0]);
})
第一步创建比例数组。
第二步,当我将数据传递给圆圈时,我将数据和数组的索引从test_data组合起来,所以在我计算y坐标的函数中,我有缩放的索引。