3

我正在尝试尝试一些简单的回归线作为 gnuplot 图的基础。但是,无论我做什么,我都无法在图表上获得超过一条拟合线。这甚至可能吗?这是我的(当前)gnuplot 程序....

set title "Foo" font "Arial Bold,14"
set term epscairo size 8,5
set style line 1 lw 0 pt 7 lc rgb "black"
set key outside
set pointsize .75
set ylabel "Y Range" font "Arial Bold"
set xlabel "X Range" font "Arial Bold"
set grid ytics
set yrange [-1:100]
set xrange [1:80]
set output 'graph.ps'

f1(x) = a1*x + b1
fit f1(x) "data/dvdate/1" using 2:3 via a1,b1

f2(x) = a1*x + b1
fit f2(x) "data/dvdate/2" using 2:3 via a1,b1

f3(x) = a1*x + b1
fit f3(x) "data/dvdate/3" using 2:3 via a1,b1

plot f1(x) title '# 1', f2(x) title '# 2', f3(x) title '# 3'

结果是我得到了一个 .ps 文件,其中一行(不覆盖其他行)和三个数据系列标签。

4

2 回答 2

4

您需要在每次拟合中使用不同的变量 (a1,b1)。

f2(x) = a2*x + b2
fit f2(x) "data/dvdate/2" using 2:3 via a2,b2
于 2012-09-01T13:08:26.610 回答
0

您可以使用“!”在 gnuplot 中调用外部程序 并且循环将生成一个临时文件以立即加载。

!rm filetoload
! for ((i=1;i<=50;i++)); do echo "f$i(x)=a$i*x+b$i; fit f$i(x) './file$i' u 1:2 via a$i, b$i">> filetoload;done
!cat filetoload
load "filetoload"

将产生:

f1(x)=a1*x+b1; fit f1(x) file1 u 1:2 via a1, b1
f2(x)=a2*x+b2; fit f2(x) file2 u 1:2 via a2, b2
f3(x)=a3*x+b3; fit f3(x) file3 u 1:2 via a3, b3
...

随心所欲地适应

于 2015-06-04T13:13:00.247 回答