Автоматическое определение масштаба для графика временных рядов - PullRequest
0 голосов
/ 25 февраля 2010

Проблема:

Я строю временной ряд. Я не знаю, априори минимальные и максимальные значения. Я хочу построить его за последние 5 секунд данных. Я хочу, чтобы график автоматически масштабировался, чтобы лучше соответствовать данным за последние пять секунд. Однако я не хочу, чтобы изменение масштаба было прерывистым (как можно было бы получить, постоянно сбрасывая минимальное и максимальное значения) - когда оно действительно масштабируется, я хочу, чтобы изменение масштаба было плавным.

Существуют ли какие-либо алгоритмы для обработки этого?

Формально:

У меня есть функция

образец с плавающей точкой ();

, что вы можете звонить несколько раз. Я хочу, чтобы вы в режиме реального времени постоянно отображали для меня последние значения 5 * 60 с хорошо масштабированной диаграммой. Я хочу, чтобы график автоматически масштабировался; но не "вяло".

Спасибо!

1 Ответ

1 голос
/ 25 февраля 2010

Вы можете попробовать что-то вроде

 float currentScale = 0;
 float adjustSpeed = .3f;

 void iterate() {

       float targetScale = sample();
       currentScale += adjustSpeed * (targetScale - currentScale);

 }

И уменьшите значение AdjustSpeed, если оно слишком резкое.

...