两种替代的D3.js缩放语法

时间:2013-02-13 17:23:22

标签: javascript svg d3.js

假设我们有一个y-scale,它将数据域转换为每个数据元素20px的范围。

var y = d3.scale.ordinal()
    .domain(data)
    .rangeBands([0, 20 * data.length]);

我通常会使用此比例来以这种方式确定某事物的y坐标:

svg.selectAll("rect")
    .data(data)
    .enter()
    .append("rect")
    .attr("y", y)

但是在一些教程中,我看到了另一种语法。

.attr("y", function(d) { return y(d); })

我不确定这里发生了什么,在继续学习D3之前我想先了解一下。我知道y是一个函数,因此括号内的d将是该函数的参数。但是我们已经在y函数中指定了数据输入。我很想阅读我们用y(d)实际做的事情的解释。这两种选择的优点和缺点是什么?

1 个答案:

答案 0 :(得分:1)

我认为这可能是一个微小的差别,可能是因为复制和粘贴使用匿名函数设置的其他attr而遗留下来的(如第二种情况)。应该没有理由将y包装在匿名函数中。