D3数据()对数据()
问题描述:
在麦克博斯托克的“Towards Reusable Charts”为什么<p>
元件的初始数据链路与基准制成(数据):D3数据()对数据()
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; }));
});
而数据的进一步链接到<svg>
元件内部图表()函数与数据进行的([数据]):
// 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");
在自己answer迈克说,这两种方法都可以互换,但前者不计算联接。那么为什么要在这里使用数据([数据])?
另外,如果已经有一个<svg>
元素作为注释行的建议,我不会得到什么结果。对我来说,进入选择在这种情况下空,没有进一步的追加将工作...
我一定是误解的东西...
感谢您的帮助!
答
在第二种情况下使用.data([data])
的优点是,如果没有SVG,则输入选择的处理会添加它。如果存在SVG,则代码完全等同于.datum(data)
- 绑定到该元素的数据将发生更改,并且不会发生任何其他情况。