Как можно в гнуплот нарисовать линию тренда сгладить график?

Есть у меня файл с точками графика. Точки дискретные, хочу сгладить их. Кокой командой это можно сделать?


Ответы (1 шт):

Автор решения: Vladimir

Сделать это можно командой smooth. Вот например, есть у Вас набор точек, пусть это массив, но это не важно, в котором протабулирована какая-то функция (это код для gnuplot 5.2):

array A[25]
do for [i=1:25] { A[i] = sin(i * 3*pi/25.0) }

Если этот массив нарисовать просто командой

plot A title "sin(x)" with lines

то получится ломаная кривая: введите сюда описание изображения

Если же мы к выводу добавим еще команду smooth с соответствующим параметром, то получится сглаженная:

plot A title "sin(x)" with lines smooth bezier 

сглаженная кривая

У gnuplot есть несколько вариантов сглаживания, о них можно почитать в документации, например так: help smooth. Соответственно, нужно использовать тот способ, который больше подходит для решаемой задачи. Возможно, Вам больше подойдет smooth csplines. Кроме этого, на результат сглаживания влияет такой параметр как samples. По умолчанию он равен 100. Если результат сглаживания не удовлетворяет (остаются углы на кривой), попробуйте сделать этот параметр больше, например set samples 1000.

→ Ссылка