这是我第一次尝试d3.js,我无法弄清楚如何重绘树形图。我正在尝试使用json请求将新数据加载到treemap example。我已将以下代码添加到我的treemap.js中。
d3.select(".search_field").on("click", function(){
d3.json("/applications.json?search=Applejuice", function(json) {
div.data([json]).selectAll("div")
.data(treemap.nodes)
.enter().append("div")
.attr("class", "cell")
.style("background", function(d) { return d.children ? color(d.name) : null; })
.transition()
.duration(1500)
.call(cell);
});
});
我在请求完成后检查了var div,并且数据正确加载到对象中。
答案 0 :(得分:2)
您正在追加新元素,而不是更新现有元素。这条线
.enter().append("div")
负责处理此问题,如果要更新现有数据,则应将其删除。在.enter()
之后调用.data()
将为您提供以前不存在的数据,.exit()
不再存在的数据。如果发现旧数据和新数据未正确合并,则可以使用.data()
的可选第二个参数来提供合并功能。