d3 为多条SVG线添加动画效果
d3 Animate Multiple SVG Lines
我正在尝试一次在折线图上创建多条线。我以以下格式创建了一个大约 100 行的对象数组:
var allLines = [{type: "linear", values: [1000, 2000, 3000]}, {}, ... {}];
var line = d3.svg.line()
.defined(function (d) {
return d != null;
})
.x(function (d, i) {
return x(new Date(minYear + i, 1, 1));
})
.y(function (d) {
return y(d);
});
现在我想画每条线,一次一条,每行之间的延迟约为 250 毫秒。我已经尝试了以下我认为可行的方法,但我一定错过了一些东西,因为它只是等待 250 毫秒,然后绘制所有线条。
svg.append('g')
.attr('class', 'lineGroup')
.selectAll('path')
.data(allLines)
.enter()
.append('path')
.attr('class', function (d) {
return d.type;
})
.style('visibility', 'hidden')
.attr('d', function (d) {
return line(d.values);
});
function foo(transition) {
transition
.style('visibility', 'visible');
}
d3.select('.lineGroup').selectAll('path').transition().delay(250).call(foo);
您的基本方法是正确的,您只需要动态调整延迟,以便稍后绘制后面的线条。目前,延迟适用于所有线路。要使其动态化,您可以使用类似
svg.append("g")
// etc
.transition()
.delay(function(d, i) { return i * 250; })
.style('visibility', 'visible');
您也可以在一次调用中完成所有操作,无需在创建线路后进行单独的调用。
相关文章:
- 使用JavaScript使按钮做出反应(添加动画)
- 使用引导事件添加动画
- 照片滑动:关闭图库会为错误的矩形(缩略图)添加动画效果
- 当用户在输入字段事件中输入内容时,为该字段事件添加动画占位符
- 在多条测地线折线上为符号添加动画效果
- 在 JavaScript 中为其添加动画效果时更改图像颜色
- 香草JS:延迟点击事件以添加动画
- 如何为右侧的文本添加动画效果
- d3 为多条SVG线添加动画效果
- 为不透明度和位置添加动画效果
- 如何使用jQuery向条形图添加动画
- 向选项卡导航添加动画
- 向此 jQuery 脚本添加动画
- 为查询同位素过滤添加动画
- 如何在按钮单击时为左右滚动添加动画效果
- 画布 - 为旋转文本添加动画效果
- 添加动画以显示/隐藏JavaScript函数
- 在滚动时向 css 更改添加动画
- 为智能手机的 HTML 表格添加动画效果
- 当地图滚动到视图中时,为谷歌地图标记添加动画效果