1

快速熟悉 D3.js。我注意到的一个项目是,如果我有一系列圆圈(即散点图)并且我将工具提示附加到从它们的源数据派生的它们,那么当我过滤数据时更新这些工具提示似乎存在问题和重画圆圈。这是过滤数据时调用的代码的一部分。请注意,过滤器是通过鼠标悬停在不同但相关的图中调用的:

circs = itemCircles.selectAll('circle')
    .data(filteredData)
    .attr("cy", function (d) { return scatY(d.sim_fnl_occ); } )
    .attr("cx", function (d) { return scatX(d.sim_curr_occ); } )
    .attr('r', 5)
    ;

circs.enter().append('circle')
    .data(filteredData)
    .attr("cy", function (d) { return scatY(d.sim_fnl_occ); } )
    .attr("cx", function (d) { return scatX(d.sim_curr_occ); } )
    .attr('r', 5)
    ;

circs.append("svg:title")
    .text(function(d) { console.log(d.sim_curr_occ); // looking good!
    return d.sim_curr_occ });// looking bad:(

将新子集数据的正确值写入控制台;但是工具提示本身的数据不正确。实际上,看起来新绘制的圆圈保留了原始工具提示。我应该指出,圆圈是正确绘制的,只有通过 svg:title 的工具提示是不正确的。关于我做错了什么的任何指导?

4

1 回答 1

1

将标题附加到enter()而不是仅将其附加到circs.

circs.enter().append('circle')
.data(filteredData)
.attr("cy", function (d) { return scatY(d.sim_fnl_occ); } )
.attr("cx", function (d) { return scatX(d.sim_curr_occ); } )
.attr('r', 5)
.append("svg:title")
.text(function(d) { 
  console.log(d.sim_curr_occ);
  return d.sim_curr_occ })
;
于 2012-07-19T11:22:36.053 回答