我试图尝试一些简单的回归线作为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文件(不覆盖其他行)和三个数据系列标签。
答案 0 :(得分:4)
你需要在每个拟合中使用不同的变量(a1,b1)。
f2(x) = a2*x + b2
fit f2(x) "data/dvdate/2" using 2:3 via a2,b2
答案 1 :(得分: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
...
如愿意的那样适应