Подтвердить что ты не робот

D3 Real-Time streamgraph (визуализация графических данных)

Мне нужен граф потока, как в этом примере: http://mbostock.github.com/d3/ex/stream.html

enter image description here

но я хотел бы, чтобы данные в реальном времени поступали справа, а старые данные оставлялись слева, так что у меня всегда есть окно из 200 образцов. Как я могу сделать это так, чтобы у меня были соответствующие переходы?

Я попытался изменить точки данных в массиве a, а затем воссоздать область как таковую

  data0 = d3.layout.stack()(a);

но мои переходы не делают вид, что график скользит по экрану.

Спасибо заранее.

4b9b3361

Ответ 1

Попробуйте этот учебник:

При реализации отображения временных рядов в реальном времени мы часто используем ось x для кодирования времени как позиции: по мере продвижения времени новые данные поступают справа, а старые данные выходят влево. Однако, если вы используете встроенный D3s path interpolators, вы можете увидеть какое-то удивительное поведение...

Чтобы устранить вигг, интерполировать преобразование, а не путь. Это имеет смысл, если вы думаете о диаграмме как визуализации функции - ее значение не меняется, просто показывали другую часть домена. Продвигая видимое окно с той же скоростью, что и новые данные, мы можем легко отображать данные в реальном времени...

Ответ 2

Вот простой пример: http://jsfiddle.net/cqDA9/1/ Он показывает возможное решение для отслеживания и обновления различных рядов данных.

var update = function () {
    for (Name in chart.chartSeries) {
        chart.chartSeries[Name] = Math.random() * 10;
    }
    for (Name in chart2.chartSeries) {
        chart2.chartSeries[Name] = Math.random() * 10;
    }
    setTimeout(update, 1000);
}
setTimeout(update, 1000);