Javascript D3数据()与基准()

Javascript D3数据()与基准(),javascript,d3.js,svg,Javascript,D3.js,Svg,在Mike Bostock的“为什么到元素的初始数据链接使用datumdata创建”中: d3.csv("sp500.csv", function(data) { var formatDate = d3.time.format("%b %Y"); d3.select("#example") .datum(data) .call(timeSeriesChart() .x(function(d) { return formatDate.parse(d.dat

在Mike Bostock的“为什么到元素的初始数据链接使用datumdata创建”中:

d3.csv("sp500.csv", function(data) {
  var formatDate = d3.time.format("%b %Y");

  d3.select("#example")
      .datum(data)
    .call(timeSeriesChart()
      .x(function(d) { return formatDate.parse(d.date); })
      .y(function(d) { return +d.price; }));
});
当使用数据[data]将数据进一步链接到图表函数内的元素时:

// Select the svg element, if it exists.
var svg = d3.select(this).selectAll("svg").data([data]);

// Otherwise, create the skeletal chart.
var gEnter = svg.enter().append("svg").append("g");
gEnter.append("path").attr("class", "area");
gEnter.append("path").attr("class", "line");
gEnter.append("g").attr("class", "x axis");
在他自己的文章中,Mike说这两种方法是可以互换的,只是前者不计算连接。那么为什么要在这里使用数据呢

此外,我也不太明白,如果已经有一个元素,如注释行所示,会发生什么。对我来说,在这种情况下,输入选择是空的,没有进一步的附加将起作用

我一定是误解了什么

谢谢你的帮助

在第二种情况下使用.data[data]的优点是,如果没有SVG,则处理enter选择会添加它。如果SVG存在,则代码与.datumdata完全等效-绑定到元素的数据会发生更改,而不会发生其他任何事情