Генерация случайных данных с интервалом в 1 минуту: Highcharts - PullRequest
0 голосов
/ 18 июня 2019

Я создал сплайн-диаграмму в реальном времени, на которой я хочу показывать точки через равные промежутки времени.

Каждая точка - это событие, происходящее через одну минуту.Однако я с трудом пытаюсь понять все движущиеся части:

  1. функция интервала в демонстрации старшей диаграммы, о которой я говорил, обновляется каждую 1 секунду, я сделал это 6000.

  2. фиктивное обновление в javascript просто берет самое последнее время и добавляет его, там должна быть какая-то задержка?

  3. данные инициализации фиктивногов серии есть цикл for, который я снова не смог понятьЯ понимаю, что javascript создает метку времени UNIX и манипулирует ее миллисекундами, однако код по умолчанию (снова слегка модифицированный из демонстрации старшей диаграммы) работает с -9999 до 0 и умножается на число.

IЯ хочу понять эти части и убедиться, что каждый раз, когда моя ось x «тикает» вправо, у меня разрыв в одну минуту и ​​только одна точка на графике.

PS: Пожалуйста, простите все пропущенные скобки, онивозможно, было пропущено при публикации вопроса, но я уверяю вас, что это не проблема.

Вот мой код для серии:

           series: [{
                type: 'spline',
                name: 'Random data',
                data: (function () {
                    // generate an array of random data
                    var data = [],
                        time = (new Date()).getTime(),
                        i;

                    for (i = -9999; i <= 0; i += 1) {
                        data.push([
                            time + i * 60000,
                            Math.round(Math.random() * 100) + 10
                        ]);
                    }
                    return data;
                }())
            }]

Вот мой код для диаграммы:

chart: {
 events: {
           load: function () {

             // Set up the updating 
             var series = this.series[0];

             setInterval(function () {
               var x = (new Date()).getTime(), // current time
               y = Math.round(Math.random() * 100) + 10

               series.addPoint([x, y], true, true);
             }, 6000);
           }
         }
       }

1 Ответ

0 голосов
/ 19 июня 2019

Что касается ваших вопросов:

  1. Если вы хотите, чтобы интервал данных составлял 1 минуту, вам нужно использовать значение 60000 (60 * 1000), 6000 миллисекунд - 6 секунд.

  2. Текущая дата в функции интервала занимает каждые 6000 миллисекунды, что вызывает пропуски в данных каждые 6000 миллисекунды.

  3. Инициализация данных зависит от вычитания, кратного шести секундам, из текущей отметки времени:


data: (function() {
    // generate an array of random data
    var data = [],
        time = (new Date()).getTime(),
        i;

    for (i = -9999; i <= 0; i += 1) {
        if (i === -500) {
            console.log(time, i, 60000); // 1560941909847 + (-500 * 60000)
            console.log(time + i * 60000); // 1560911909847
        } else if (i === -499) {
            console.log(time, i, 60000); // 1560941909847 + (-499 * 60000)
            console.log(time + i * 60000); // 1560911969847
        } else if (i === 0) {
            console.log(time, i, 60000); // 1560941909847 + (0 * 60000)
            console.log(time + i * 60000); // 1560941909847 = actual time
        }
        data.push([
            time + i * 60000,
            Math.round(Math.random() * 100) + 10
        ]);
    }
    return data;
}())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...