使用plotly.js动画功能
Using plotly.js animation feature
昨天Plotly发布新功能动画!!所以我非常渴望测试它,并且由于目前缺乏文档(我想是暂时的),我在如何使用它方面挣扎了相当多。我确实偷看了一下GitHub上的代码,但是……不工作。
-
我在模板中定义了div元素:
<div id="plotDiv"> </div>
-
我想让情节响应调整大小事件,因此我遵循了plotly网站上的示例:
const d3 = Plotly.d3; const gd3 = d3.select("#plotDiv") .style({width: "95%", "margin-left": "2.5%"}); const gd = gd3.node();
-
然后生成数据(角魔法和其他东西),但最终它看起来像这样:
data = {x: [array_ot_dates], y: [array_of_not_so_random_values], type:'bar'};
-
根据jsdocs的动画功能,你需要传递一个帧:
let plotlyFrame = {data:data, layout:{}};
-
尝试调用动画!!
Plotly.animate(gd, plotlyFrame);
它开始了,Kaboum!
第一个错误是:这个元素不是Plotly: [object HTMLDivElement]但是当我尝试这个:
Plotly.newPlot(gd, data, {});
我有我的情节…
所以我尝试通过调用Plotly来"预定义"gd。用空数据绘图,然后使用animate函数…
Plotly.plot(gd, [], {});
// make my data not empty
Plotly.animate(gd, plotlyFrame);
然后我得到以下错误:
plotly.js:116922 Uncaught (in promise) TypeError: Cannot read property '_module' of undefined(…)
第二个可能是由于我使用了angular,因此在一个点上连续调用该函数3次。
有什么建议吗?想法吗?
我就是制作动画的人!首先,你可以在这里找到文档。
关于你的具体问题,看起来答案是你需要在动画之前初始化情节(我会将其添加到文档中!)。例如:
var frame = [{
data: {
y: [...new values...]
}
}]
Plotly.plot(gd, [{x: [...], y: [...]}]).then(function() {
Plotly.animate(gd, frame)
});
如果某种用户输入正在触发动画,则可能不需要承诺(因为输入事件将处理事情,并且在Plotly.plot
有机会初始化之前不太可能被触发)。
另外,至少我认为您需要用您希望动画的跟踪实际初始化plot 。我认为你可能可以摆脱空数据,但你仍然需要至少有一个跟踪定义,例如Plotly.plot(gd, [{x: [], y: []}])
。我认为你尝试修复的问题是,[]
的痕迹列表仍然是空的,就Plotly而言,因为这告诉它没有任何关于存在的痕迹类型。另外,并不是真正设计的一件事是以一种奇特的方式绘制初始情节。这可能会实现,但它不是自动给animate
在一个空的地块。
我希望这足以澄清问题!这是一个相当大的功能,所以我们希望听到反馈,并听到成功/失败!
- 动画功能不应用于每个元素
- 是否有“”的键盘快捷键;暂停动画”;Chrome开发工具中的功能?(F12)
- CSS与Jquery、滑块、动画、灯箱..加载时间与功能
- JQuery动画完整功能:如何恢复我的"老这个”;
- 重复jquery点击激活的动画功能
- 从对象旋转对象.带有自定义动画功能的trix.setrotationfromleuler
- jQuery有没有,或者有没有jQuery插件,内置了监听CSS3动画事件的功能(例如animationEnd)
- 开始按钮用于启用和恢复动画,而无需在双击时再次重复该功能(javascript)
- 如果悬停:动画完成后重新调用功能
- 边缘动画下级舞台中的辅助功能
- 从某些ID中排除滚动动画功能
- 单击时动画化图像功能,同时重叠其同级元素
- OwlCarousel 2功能动画
- 为什么不'这个动画功能不起作用
- 如何控制单击按钮时的动画功能
- 限制和动画功能
- 为与CSS3动画完成相关的功能添加回退
- 滚动功能无法正确启动动画
- WebKit动画点击功能错误
- 制作转盘,可以't在点击功能动画化后滚动(更新了JSFiddle链接)