gnuplot

色とか
set logscale
set xrange [1:1000]
set yrange [1:10000]
set xlabel "neutron kinetic energy [MeV]"
set ylabel "cross section [mbarn]"
set style line 1 lt 1 lc rgb "red" lw 1
set style line 2 lt 1 lc rgb "green" lw 1
set style line 3 lt 1 lc rgb "blue" lw 1
set style line 4 lt 1 lc rgb "magenta" lw 1
set style line 5 lt 1 lc rgb "cyan" lw 1
set style line 6 lt 1 lc rgb "brown" lw 1
set style line 7 lt 1 lc rgb "yellow" lw 1
plot 'sigma.dat' using 1:2 title 'ch1 Hydrogen elastic' with lines ls 1,\
二軸
set xrange [0:10]
set yrange [0:2]
set ytics 0.5
set mytics 5
set y2range [0:6000]
set y2tics 1000
set ytics nomirror
plot "tonari.dat" using 3:7 axis x1y1 smooth bezier with lp,\
"tonari.dat" using 3:5 axis x1y2 smooth bezier with lp,\

lt は線種。色をつけるなら、 set output eps color solid と出力を設定すればよい。
set style line 1 pt 1 lt 1 lc rgb "red" lw 1
set style line 2 pt 1 lt 1 lc rgb "green" lw 1
set style line 3 pt 1 lt 1 lc rgb "blue" lw 1
set style line 4 pt 1 lt 1 lc rgb "magenta" lw 1
set style line 5 pt 1 lt 1 lc rgb "cyan" lw 1
set style line 6 pt 1 lt 1 lc rgb "brown" lw 1
set style line 7 pt 1 lt 1 lc rgb "yellow" lw 1
set style line 8 pt 1 lt 1 lc rgb "plum" lw 1

あと、fitは簡単な関数でおこなって、 そのパラメータをそのまま引き継いでプロットするといい感じ。
f(x) = - a + b*x - c*x**2
g(x) = - d + e*x - f*x**2
h(x) = - g + h*x - i*x**2
i(x) = - j + k*x - l*x**2

fit f(x) "gain5.dat" using (log($1)):(log($2)):($3/$2) via a,b,c
fit g(x) "gain6.dat" using (log($1)):(log($2)):($3/$2) via d,e,f
fit h(x) "gain7.dat" using (log($1)):(log($2)):($3/$2) via g,h,i
fit i(x) "gain8.dat" using (log($1)):(log($2)):($3/$2) via j,k,l

ff(x) = exp(- a + b*log(x) - c*(log(x))**2)
gg(x) = exp(- d + e*log(x) - f*(log(x))**2)
hh(x) = exp(- g + h*log(x) - i*(log(x))**2)
ii(x) = exp(- j + k*log(x) - l*(log(x))**2)

ログログ上で多項式でフィットしたい場合。
そのとき誤差はテーラー展開から単に割ったものになる(usingの三項目)
こうした方がフィットの収束が早くていい感じ。

フィットした結果から、例えば物理的にはある点の接線が物理的に意味があるとする。
この時、伝搬を機械的に計算すると、本来は打ち消しあう誤差を単純に足したりしてしまい、誤差の評価がおかしくなる。
しかし、真面目に計算できるほど頭は回らないので、ソフトに頑張ってもらう。
そのとき、求めたい物理量をパラメータとして式を変換すればよい。
そうすると、正しい感じの誤差まで自動で得られる。

plot 'sample.dat' every ::1 using 1:2 smooth unique with lines,\
'' every ::1 using 1:2 with points 6


fitに関すること。 gnuplotのfitは、デフォルトではrmsが最小になるようにしている。 で、重みを付ける(using 1:2:3とか)と、 (($1-$2)/$3)**2 が最小になるように計算している。 んで、 WSSRはその和 variance of residuals は WSSR/(degrees of freedom) rms of residuals は sqrt(variance of residuals) ってことで、実はどれも正しかったり正しくなかったりする。 デフォルトでは重みが1なので、rmsは(関数の分を引いた)rmsで正しいが、 (正しくないいいいいいい rmsなのになぜか(degrees of freedom)で割っているので変。 WSSRを自分で割り算した方がよいかと。) variance of residualsはchisquareではない。 ていうか、カッコでchisquareって書いてあるけどこれはカイ二乗じゃない。 これを言葉の意味のとおりにするには、誤差を正しく与えなければならない。 で、 a=2.0 b=1.0 f(x) = a*x+b fit f(x) "jikan_1010.dat" using 1:2:(sqrt(f($1))) via a,b とか書くと、カイ二乗に多分なるっぽい(excelで確認した)。 だけど、このusing内のf(x)の値はフィットする前の値を使ってる(初期値かな?) みたいで、思った動作をしてくれない。 なんで、二回ぐらい連続して書いておくといいかも 平均をとった観測量はrmsでいいと思うので普通に。 ただ、rmsじゃなくて、その値の重みを付けたい時は、 fit f(x) "jikan_1010.dat" using 1:2:(f($1)) via a,b がいいと思う。 この結果はフィットが平均何割ずれているかを表す無次元量になる。 統計では何というのかいまいち分からない。 カイ二乗でもなければrmsでもない。 平均を取った観測量は統計に従うわけではないので、 カイ二乗検定はまちがいだと思う。 だれか偉い人おしえて。
結局、ちゃんと誤差与えれば、動作は正しい。
誤差を与えないときのfitはrms。
という感じか。
多数回測定で得られた物理量のフィットでのカイ二乗検定 についてぱっとドキュメントがみつから無かったけど、 測定量のシグマが得られてれば、そのシグマを誤差としてカイ二乗検定 すればいい。直感的にそうだよね。

set label sprintf("5ch y = %.4g + %.4gx", a,b) at 7.25,4.3 

set xrange [0.98:1.0]
set yrange [0.98:1.0]
set cbrange [0.0:0.25]
set xlabel 'Ra(2cm surface)'
set ylabel 'Rb(4cm surface)'
set title 'lambda=1350cm, 20*40, Rmylar = 1.0'
unset key
set ticslevel 0
set dgrid3d 40,40
set hidden3d
set pm3d map
splot './999.dat' using 1:2:3 with lines


help rgbcolor
show palette colorname
help ternary(三項演算子)
help if
help reread

gnuplotの3Dplotとかcallしてloopとかhelpとか
fitの話とか、printfとかのスクリプトとか。