Задать вопрос

Как масштабировать два графика для сравнения их формы?

Есть два графика (две ломаные линии). Графики строятся по точкам в прямоугольной системе координат.
По оси х - время, по оси y значения. Простейшие графики.
https://imgur.com/4XGChIm
Количество точек на обоих графиках всегда одинаково. (В каждый момент времени измеряется значение и "наносится" на каждый график.)

Значения (по оси y) у точек могут быть самыми различными. От очень больших, до очень малых.
И если изобразить эти два графика в одной системе координат мы часто будем получать прямые линии.
Нужно масштабировать графики, для того чтобы оценить их форму относительно друг друга.
Как масштабировать два графика для сравнения их формы?

Пока алгоритм (может и неверный) такой.
Для каждого графика расcчитываем (свой) коэффициент_масштабирования.
Для этого ищем на графике минимальное_значение и максимальное_значение.
значение1=100/минимальное_значение
значение2=100/максимальное_значение
коэффициент_масштабирования=(значение1+значение2)/2

Далее при построении графиков умножаем значение точки (по оси значений y, разумеется т.к. х у нас время и мы его вообще не трогаем) на коэффициент_масштабирования.
значение_точки_по_оси_у=исходное_значение_точки_по_оси_у*коэффициент_масштабирования.
  • Вопрос задан
  • 1926 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
Есть два простых решения.

Для каждого графика ищем максимальное абсолютное значение (по модулю) и делим все значения на него. Получаем нормированный график, где все значения лежат в диапазоне от -1 до 1. При этом может оказаться, что одной из границ (-1 или 1) график не достигает (например, если все значения положительные). При этом у нас сохраняются пропорции как расстояний между любыми парами точек, так и расстояний от каждой точки до ноля. Например, если у нас было y2 = y1*2 и y3 = y1*3, то после нормировки мы получим y2' = y1'*2 и y3' = y1'*3.

Если ноль не важен, то сначала вычитаем из всех значений минимальное, а уже к результату применяем нормировку на максимум. Получаем график в диапазоне от 0 до 1. При этом сохраняются только пропорции расстояний между точками, но не между их абсолютными значениями. Из примера выше получаем: y1'=0, y2'=0.5 (а не y1'*2), y3'=1 (а не y1'*3), но при этом (y3-y1)/(y2-y1)=2 и (y3'-y1')/(y2'-y1')=2.
Ответ написан
Griboks
@Griboks
У меня есть такая идея, от которой у вас все там на уши встанут! А что, если графики вообще не нужно масштабировать?? Это же гениально! Мы просто строим один график, а поверх него - второй график в своей системе координат и границами отображения. В итоге получаем два наложенных друг на друга графика с разной формой.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы