使用d3.js移动折线图
Moving line timegraph with d3.js
我正在使用d3.js创建一个显示数据的图,该图在折线图中定期更新(每秒更新一次)。x轴(时间)和整个图形连续向左平移。
我试着以本教程为基础:http://bost.ocks.org/mike/path/
这个jsfiddle就是我到目前为止得到的:http://jsfiddle.net/panbert/dmynvjzx/
它有效。但在更新方法中(Javascript部分的最后一个方法)
//move the graph left
svg.selectAll(".line")
.attr("d", line(data))
.attr("transform", null)
.transition()
.duration(950)
.ease("linear")
.attr("transform", "translate(" + (x(0) - x(1000)) + ")");
我使用950毫秒的持续时间进行转换,将图形向左平移1秒。在教程中,转换的延迟是1秒,这对我来说更有意义。每秒钟,图形都会被一个翻译向左移动1秒,这个翻译的持续时间应该需要一秒钟。这听起来比950毫秒的翻译更有逻辑性。
如果我在第161行将jsfiddle中的翻译持续时间增加到1秒(就像教程中一样),我会出现图形错误,而且它不再像预期的那样工作。
有人能向我解释一下为什么?
原因是您在每1秒后调用更新函数
setInterval(update, 1000);
并且给出了过渡的持续时间
svg.selectAll(".line")
.attr("d", line(data))
.attr("transform", null)
.transition()
.duration(950)//this means that the transition will take 950 mili secs which is less than the update rate.
但是,当你像更新一样持续1秒时,它不会给你跳跃效果,因为过渡没有结束,你正在用新的值更新路径。
svg.selectAll(".line")
.attr("d", line(data))
.attr("transform", null)
.transition()
.duration(1000)//this means that the transition will take 1000
所以最好的方法是,当你给持续时间1000(1秒)使更新速率略高于1秒,例如(1.1秒)
setInterval(update, 1100);
此处的工作代码
希望这能有所帮助!
相关文章:
- 用与线条相同的颜色填充多折线图上的点
- 跟踪jqplot垂直折线图的鼠标位置
- Morris.js折线图x轴标签在调整大小后消失
- Chart.js V2折线图缺点
- 将直流图表库中的折线图缩放限制为小时
- 如何用d3.js绘制折线图
- 部分填充区域的折线图
- 将时间缩放添加到折线图(Chart.js)
- Chart.js折线图的0线型
- 如何使用tweenJS使位图移动到某些点
- d3绘制动画折线图的基本示例
- Javascript FLOT组合条形图;以x轴为字符串的折线图
- 如何在折线图中显示最近的值
- charts js更改折线图轴的字体大小/颜色和背景线
- 从特定系列的谷歌可视化折线图中删除悬停工具提示
- D3折线图鼠标悬停坐标效果
- 以角度nvd3折线图显示当前时间
- 具有任意多条线的D3折线图(以及特定的数据格式)
- D3在转换时退出多个系列折线图标签
- 使用d3.js移动折线图