在d3中编辑selectAll中每个元素的元素数据

时间:2013-09-06 02:44:44

标签: javascript svg d3.js

在街区 -

http://bl.ocks.org/whatsthebeef/6456877

我正在尝试为selectAll()中的每个项目的数据添加属性。我解释这个documentation说这应该有用,但事实并非如此。我还尝试了一些CSV文件,这些文件以相同的方式在地图上绘制圆圈,但也无效。我了解还有其他选项,例如在enter()之后使用数据确实有效但我还有其他用例,这样做太迟了。

当注释掉的代码// .data(countries)被取消注释并且当前的data(function(d){....})被删除后,它才能正常运行。

有谁知道我在做什么是可能的,如果是的话,我做错了什么?

2 个答案:

答案 0 :(得分:1)

数据的可选第二个参数是key function。我建议将该属性添加到具有forEach的国家/地区:

var countries = topojson.feature(world, world.objects.countries).features;
countries.forEach(function(d){ d.code = "1"; });

svg.selectAll("path:not(.graticule)")
    .data(countries)
  .enter().append("path")
    .attr("d", path);

http://bl.ocks.org/1wheel/6459380

答案 1 :(得分:1)

你应该能够以这种方式做你想做的事,比如

.data(data, function(d) { d.bar = 10; return d.foo; })

完整示例here

这样做是否是一个好主意是一个不同的问题,答案几乎肯定不是。