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

График реального времени с nvd3.js

Я пытаюсь создать график реального времени, используя nvd3.js, который будет периодически обновляться, и создается впечатление, что данные обрабатываются в реальном времени.

На данный момент мне удалось создать функцию, которая периодически обновляла график, но я не могу добиться плавного перехода между "состояниями", такими как линия, выполняющая переход влево.

Здесь это то, что я использовал с помощью nvd3.js, здесь интересный код:

d3.select('#chart svg')
    .datum(data)
    .transition().duration(duration)
    .call(chart);

Теперь я смог создать то, что хочу, используя d3.js, но я предпочел бы использовать все инструменты, предоставляемые nvd3.js. Здесь - это то, что я хотел бы создать с помощью nvd3

Интересный код для перехода с использованием d3.js:

function tick() {

    // update the domains
    now = new Date();
    x.domain([now - (n - 2) * duration, now - duration]);
    y.domain([0, d3.max(data)]);

    // push the accumulated count onto the back, and reset the count
    data.push(Math.random()*10);
    count = 0;

    // redraw the line
    svg.select(".line")
        .attr("d", line)
        .attr("transform", null);

    // slide the x-axis left
    axis.transition()
        .duration(duration)
        .ease("linear")
        .call(x.axis);

    // slide the line left
    path.transition()
        .duration(duration)
        .ease("linear")
        .attr("transform", "translate(" + x(now - (n - 1) * duration) + ")")
        .each("end", tick);

    // pop the old data point off the front
    data.shift();

}
4b9b3361

Ответ 1

Вероятно, вы захотите посмотреть: D3 Real-Time streamgraph (визуализация графических данных),

особенно ссылка ответа: http://bost.ocks.org/mike/path/

В общем, я вижу два способа решения проблемы вертикального перехода:

  • избыточная выборка, имеющая некоторую линейную интерполяцию между реальной точкой, и чем меньше интервал между точками, тем больше будет "горизонтальный" вертикальный переход (но недостатком является то, что вы получаете много "ложных" точек, что может быть неприемлемо в зависимости от использования диаграммы).
  • расширьте диаграмму, добавив в конце и переведя диаграмму слева, убедившись, что оставшаяся доступная левая часть не отображается, пока вы ее не удалите (обрезать или сделать какой-либо другой трюк), что лучше, и решение упомянутое выше, делает это