У меня возникли проблемы с выяснением того, как анимировать потоковый граф protovis. Я думаю, что лучший способ - просто передать массив индексов i, j
в .layers()
и заставить функции .x()
и .y()
искать фактические значения обновления. Есть ли более простой способ?
Как анимировать стримграф protovis?
Ответы (1)
Не могли бы вы просто обновлять данные перед каждым рендером? Предполагая, что данные изменились, я не уверен, что вижу преимущество в том, чтобы делать это иначе, так как я думаю, что весь визуализатор должен будет повторно отображаться.
function getData(offset) {
// get/create your data here, maybe seeded with an offset
}
var offset = 0;
// ... define scales and stuff
var vis = new pv.Panel()
.width(w)
.height(h);
vis.add(pv.Layout.Stack)
// wrap in a function to re-evaluate on render
.layers(function() getData(offset))
.offset("wiggle")
.x(x.by(pv.index))
.y(y)
.layer.add(pv.Area);
// use setInterval to animate
setInterval(function() {
offset++; // still working on the offset idea
vis.render();
}, 20);
Кажется, это работает, хотя на самом деле это зависит от того, какую анимацию вы хотите создать — для некоторых видов анимации могут быть более эффективные подходы.
person
nrabinowitz
schedule
31.01.2011