Как анимировать стримграф protovis?

У меня возникли проблемы с выяснением того, как анимировать потоковый граф protovis. Я думаю, что лучший способ - просто передать массив индексов i, j в .layers() и заставить функции .x() и .y() искать фактические значения обновления. Есть ли более простой способ?


person joeforker    schedule 07.10.2010    source источник


Ответы (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