2015-12-02 45 views
0

我试图理解这个代码:输入参数'd'在D3.js函数中意味着什么?

var w = 900; 
var h = 200; 
var barPadding = 1; 

var dataset = [ 5, 10, 13, 19, 21, 25, 22, 18, 15, 13, 
      11, 12, 15, 20, 18, 17, 16, 18, 23, 25 ]; 

//Create SVG element 
var svg = d3.select("div") 
    .append("svg") 
    .attr("width", w) 
    .attr("height", h); 

svg.selectAll("rect") 
.data(dataset) 
.enter() 
.append("rect") 
.attr("x", function(d, i) { 
     return i * (w/dataset.length); 
}) 
.attr("y", function(d) { 
     return h - (d * 4); 
}) 
.attr("width", w/dataset.length - barPadding) 
.attr("height", function(d) { 
     return d * 4; 
}) 

我无法弄清楚什么是“d”和“我”的意思是作为内回调函数的输入参数。可能它非常简单。

回答

4

当您给出data()函数的元素数组时,d3会在您执行enter()调用时为您迭代它。在回调中,d, i意味着来自dataset数组及其索引的元素。

当写:

svg.selectAll("rect") 
.data(dataset) 
.enter() 
.append("rect") 

D3产生一束<bar>元件,一个用于所述阵列中的每个条目(与原来的阵列上索引沿相关联的数据是通过d, i给出每个条目)的。更重要的是,它还将数组中每个条目的数据与该DOM元素相关联,如数据属性。

+0

谢谢,现在我明白了 – irynabond

1

d是正在呈现的数据值,i是数据数组中数据值的索引。

因此,呈现第一个数据点时,d是5,i是0

相关问题