D3,移除点以用新点刷新
D3, removing points to refresh with new ones
我正在尝试设置一个函数,这样我就可以(希望)通过调用这个函数来刷新我的d3设置。我有一个设置了topojson的d3地图,并在上面绘制点——想要的效果是让用户更改地图上的数据。
因此,在我的d3脚本中,我有一个部分,我将分离出来的点绘制成一个函数,比如So-
function plotPoints(data){
svg.selectAll(".pin").exit().remove();
svg.selectAll(".pin")
.data(data.earthquakes)
.enter().append("circle", ".pin")
.attr("r",function(d){
return d.magnitude/2;
})
.on('mouseover', tip.show)
.on('mouseout', tip.hide)
.attr("transform", function(d) {
return "translate(" + projection([
d.lon,
d.lat
]) + ")"
});
}
然后在最底部,我用一些样本数据启动它,比如-
plotPoints(places);
这工作得很好-然而,我正试图用在上面做什么
thesvg.selectAll(".pin").exit().remove();
是在添加第二个点之前删除所有第一组点。我似乎搞不清楚这个细节,也不知道为什么。当我按原样运行函数时(没有删除部分),它只是在旧点的基础上添加新点。非常感谢在这件事上提供一些帮助。如果有一种方法可以通过交错来设置点的动画,则可以获得额外的积分。我不知道这是否有帮助,但它在一个有角度的应用程序中。非常感谢您的阅读。
编辑:我能够通过使用来解决它
svg.selectAll("circle").remove();
然而,我仍在努力弄清楚如何用交错来制作动画。
您似乎不了解进入、更新和退出选择模式是如何工作的。看看http://bost.ocks.org/mike/join/
简而言之,您正在调用exit()
,但尚未绑定该调用中的任何数据,因此exit()
选择将为空。
我建议您将svg.selectAll(".pin").exit().remove();
更改为svg.selectAll(".pin").remove();
请注意,更改后的行中没有exit()
。该行现在将选择具有pin
类的所有DOM元素,并将它们从DOM中移除。
相关文章:
- ASP.NET MVC 3-在ajax调用后,重定向到新页面或生成页面刷新
- 在不刷新整个网格的情况下,向Asp.net网格视图添加新行
- 谷歌地图设置中心到一个新点击的区域
- D3,移除点以用新点刷新
- jQueryAJAX将数据重新加载到DOM中,或者使用新数据刷新DOM
- 插入数据并用新数据刷新数据网格后,关闭弹出窗口
- 谷歌地图多边形 - 添加新点后重新绘制
- 模式未使用新数据刷新
- D3 js 更新图只是在顶部添加新点
- 有没有办法在 MVC 中的视图上使用 ajax 调用来使用新信息刷新页面
- Java - JWebBrowser无法加载新点到地图
- 在散点图中添加新点
- 如果在onFrame中添加了新点,Path.scale将被忽略
- 如何用新数据刷新剑道网格
- 添加新点时移动图表
- Javascript替换内容并用来自outerHTML的新内容刷新它
- 在Google Maps API中从Lat和Long创建一个新点
- 使用Paper.js在贝塞尔曲线中插入新点的理想手柄位置
- 使用新随机数刷新img src
- 在KineticJS中点击添加一个新点到多边形