2012-01-30 8 views
8

Użyłem Gnuplot do wykreślenia moich danych wraz z linią regresji liniowej. Obecnie "tytuł" tej linii, która ma swoje równanie obliczone przez Gnuplot, jest po prostu "f (x)". Jednak chciałbym, aby tytuł był równaniem linii regresji, np. "y = mx + c".Podczas korzystania z Gnuplot, w jaki sposób można wydrukować równanie linii w tytule linii?

Mogę to zrobić ręcznie, odczytując "m" i "c" z danych wyjściowych kreślenia, a następnie ponownie wydrukuj z nowym tytułem. Chciałbym, aby proces ten był zautomatyzowany i zastanawiał się, czy można to zrobić i jak to zrobić.

Odpowiedz

21

Z pliku danych Data.csv:

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

można zrobić oprawa liniowa z:

f(x) = a*x + b 

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

Można wykorzystać to, co myślę, że jest nazywany makro w gnuplot ustawić tytuł w legenda o Tobie zidentyfikowana funkcja f(x) z

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

Teraz w celu ustalenia danych z funkcją regresji f(x) po prostu zrobić:

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

Należy skończyć z tej działki:

enter image description here

1

Od Correlation coefficient on gnuplot:

innego, być może nieco krótsza droga niż Woltan to robienie tego samego:

# 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) 
Powiązane problemy