D3.js如何获得数据阵列的多个比例?

时间:2015-12-28 16:15:41

标签: d3.js

如果我有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
    })

1 个答案:

答案 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坐标的函数中,我有缩放的索引。

相关问题