两种可选的D3.js规模语法

Two alternative D3.js scale syntaxes

本文关键字:语法 js D3 两种      更新时间:2023-09-26

假设我们有一个y刻度,它将数据域转换为每个数据元素20像素的范围带。

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)做了什么的解释。这两种选择的利弊是什么?

我认为这是复制和粘贴使用匿名函数设置的其他attr(如第二种情况)时留下的一个小区别。应该没有理由将y封装在匿名函数中。