При использовании Gnuplot, как можно вывести уравнение строки в заголовке строки? - PullRequest
9 голосов
/ 31 января 2012

Я использовал Gnuplot для построения своих данных вместе с линией линейной регрессии. В настоящее время заголовок этой строки, уравнение которой рассчитывается Gnuplot, это просто "f (x)". Тем не менее, я хотел бы, чтобы название было уравнением линии регрессии, например, «У = х + с».

Я могу сделать это вручную, прочитав 'm' и 'c' из вывода информации о графике, затем заново составив график с новым заголовком. Я хотел бы, чтобы этот процесс был автоматизирован, и мне было интересно, можно ли это сделать и как это сделать.

Ответы [ 2 ]

23 голосов
/ 31 января 2012

С файлом данных Data.csv:

0   0.00000
1   1.00000
2   1.41421
3   1.73205
4   2.00000
5   2.23607

вы можете выполнить линейную подгонку с помощью:

f(x) = a*x + b

fit f(x) 'Data.csv' u 1:2 via a, b

Вы можете использовать то, что я думаю, называется макросом в gnuplot, чтобыустановите заголовок в легенде о том, что вы определили функцию f(x) с помощью

title_f(a,b) = sprintf('f(x) = %.2fx + %.2f', a, b)

Теперь, чтобы отобразить данные с помощью функции регрессии f(x), просто выполните:

plot "Data.csv" u 1:2 w l, f(x) t title_f(a,b)

Youдолжен закончиться с этим участком:

enter image description here

1 голос
/ 16 февраля 2018

С Коэффициент корреляции на гнуплоте :

Другой, возможно, немного более короткий способ, чем Уолтан, делает то же самое:

# This command will analyze your data and set STATS_* variables. See help stats
stats Data.csv
f(x) = STATS_slope * x + STATS_intercept
plot f(x) title sprintf("y=%.2fx+%.2f", STATS_slope, STATS_intercept)
...