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'

その結果、3 つのデータ シリーズ ラベルを含む 1 行 (他の行をオーバーレイしない) を持つ 1 つの .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 に答える