При использовании 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)
Другие вопросы по тегам