2012-01-30 6 views
8

Ho usato Gnuplot per tracciare i miei dati, insieme a una linea di regressione lineare. Attualmente, il "titolo" di questa linea, che ha la sua equazione calcolata da Gnuplot, è solo "f (x)". Tuttavia, vorrei che il titolo fosse l'equazione della linea di regressione, ad es. "Y = mx + c".Quando si utilizza Gnuplot, come si può stampare l'equazione di una riga nel titolo della riga?

Posso farlo manualmente leggendo "m" e "c" dall'output di informazioni di stampa, quindi ri-trama con il nuovo titolo. Vorrei che questo processo fosse automatizzato e mi chiedevo se fosse possibile farlo e come farlo.

risposta

21

Con un file di dati Data.csv:

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

si può fare un raccordo lineare con:

f(x) = a*x + b 

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

È possibile utilizzare quello che penso si chiama una macro in gnuplot per impostare il documento nella leggenda di voi funzione f(x) identificata con

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

Ora, al fine di tracciare i dati con la funzione di regressione f(x) semplicemente fare:

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

Si dovrebbe finire con questa trama:

enter image description here

1

Da Correlation coefficient on gnuplot:

Un altro, forse un modo leggermente più corto rispetto a quello di Woltan di fare la stessa cosa potrebbe essere:

# 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)