如何在D3.JS中使用转换更新Y域
How to update the Y domain with a transition in D3.JS?
我必须显示每100毫秒更新一次的增长折线图。我找到了一种方法来正确地更新数据:
path
.attr("d", line)
.attr("transform", null)
.transition()
.duration(100)
.ease("linear")
.attr("transform", "translate(" + x(0) + ",0)")
.each("end", tick);
但是我对Y轴定义域有疑问
我这样定义Y轴:
var y = d3.scale.linear()
.domain([-1, 1])
.range([height, 0]);
,然后在每次刷新时用指令更新它:
y.domain([avg - 10, avg + 10])
它工作,但我有一个糟糕的"剪辑"效果。
演示:https://jsfiddle.net/j499oy0e/
如何用过渡或类似的东西删除它?
与其监听过渡的"end"事件并再次调用tick()函数,我建议使用javascript提供的requestAnimationFrame(),这将有助于使动画更流畅。如果您按照如下方式设置tick函数:
function tick(){
requestAnimationFrame(tick);
//...rest of the code
}
将发生的是requestAnimationFrame将等待当前的"绘图"完成之前调用传递给它的函数,这是函数本身。添加此更改并删除'。从路径选择中,你可能会注意到一个带有可变FPS的动画(取决于许多东西)。这个动画的fps可以很容易地控制。用requestAnimationFrame控制fps ?
同样,试着完全删除过渡,看看你是否更喜欢
path
.attr("d", line)
.attr("transform", "translate(" + x(0) + ",0)");
希望这是你正在寻找的!
相关文章:
- 无法在现有状态转换期间更新-未使用任何非法的setState()
- 将字符串转换为数组使用javascript更新一个值并返回一个字符串
- 更新分组条形图(转换或删除元素组)
- d3.pack()转换更新
- CSS转换未在增加高度时更新背景色
- 更新int数组会在Mongo-shell中转换为双数组
- d3.js无法使用通用的更新模式和转换
- 如何转换我的 js 代码,以便对象的每个属性都通过输入值和单选按钮值更新
- 使用 JavaScript 更新转换属性中的 rotate() 属性
- 转换地段图,使其以 60 秒的间隔动态更新
- 更新文档,但出现错误:对于未定义的值,强制转换为字符串失败
- 在保存新的模型实例之后,在Ember.js中转换到路由之前,更新资源模型
- d3js-使用多行更新转换
- 如何在Javascript中更新SVG元素上的转换
- CSS转换没有在所有浏览器中使用jQuery进行更新
- D3.js转换多行-数据不更新
- 如何在React中进行两天的数据绑定,当输入值A更新时B更新,反之亦然,同时保留以前转换的历史记录
- index.js:1335警告:setState(..):无法在现有状态转换期间更新(例如在' render '或其他组
- 在转换(SVG)之后获得更新的多边形点
- 如何在D3.JS中使用转换更新Y域