Не уверен, в чем проблема с этим, поэтому я составил некоторые данные
Я думаю, что ваш алгоритм правильный, и вам нужно только нормализовать ось X.
Я придумал этот код (и некоторые графики), чтобы продемонстрировать то, что я считаю ответом
Определите некоторые значения x и y:
def x = 1..30
def y = [1..15,15..1].flatten()
Затем создайте список значений xy в форме: [ [ x, y ], [ x, y ], ...
def xy = [x,y].transpose()
Если мы построим этот список, мы получим:

Затем определите функцию нормализации (в основном, такую же, как ваша, но она не касается значения y)
def normalize( xylist, days ) {
xylist.collect { x, y -> [ x * ( days / xylist.size() ), y ] }
}
Тогда мы можем нормализовать наш список до 28 дней
def normalxy = normalize( xy, 28 )
Теперь, если мы построим эти точки, мы получим

Как видите, оба графика имеют одинаковую форму, они просто разной ширины ...
Я пропустил суть?