При использовании Gnuplot, как можно вывести уравнение строки в заголовке строки?
Я использовал Gnuplot для построения своих данных вместе с линией линейной регрессии. В настоящее время заголовок этой строки, уравнение которой рассчитывается Gnuplot, это просто "f(x)". Тем не менее, я хотел бы, чтобы название было уравнением линии регрессии, например, "y=mx+c".
Я могу сделать это вручную, прочитав "m" и "c" из вывода информации о графике, а затем заново составить график с новым заголовком. Я хотел бы, чтобы этот процесс был автоматизирован, и мне было интересно, можно ли это сделать и как это сделать.
2 ответа
С файлом данных 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)
Вы должны в конечном итоге с этим сюжетом:
Из коэффициента корреляции по гнуплоту:
Другой, возможно, немного более короткий способ, чем Уолтан, может сделать то же самое:
# 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)