4.2 対数グラフを描く

$ y$ が量 $ x$ の巾に比例する場合、それを確認するには、 両側対数目盛りのグラフ用紙にプロットすれば良いというのは、 理科の実験の常識であるが、 それを gnuplot で実行するには、 set logscale xy を実行すれば良い。 対数目盛りを解除するには set nologscale とする。
error.tbl” を通常の目盛りと両側対数目盛りの両方でプロットする

gnuplot> plot "error.tbl" with lines  
gnuplot> set logscale  
gnuplot> plot "error.tbl" with lines  
gnuplot> set nologscale ← 通常の目盛りに戻しておく

(縦軸横軸両方とも対数目盛にするために、 以前は set logscale xy と指定していたが、 単に set logscale で良い、というのを学生に教わった。)

図 7: 通常の目盛りと両側対数目盛り
\includegraphics[width=7cm]{ex4.2.1.eps} \includegraphics[width=7cm]{ex4.2.2.eps}

片側対数グラフ     横軸だけ対数目盛りにするには set logscale x, 縦軸だけ対数目盛りにするには set logscale y とすれば良い。

対数グラフで負の値を処理するには     例えば誤差を符号付きで記録しているファイルがあるとき、 普通に using 1:2 としたのでは (対数関数の引数に負の値は渡せないので) エラーが発生する。 これを避けるには using ($1):(abs($2)) のように、 絶対値を取ることを明示すればよい。


(2016/5/12記) 軸の目盛りに、従来は指数形式で数値を表示していた(と記憶している)が、 普通の小数で書くようになってしまっている。 $ 0.0000000000000001$ なんてのをスクリーンで見て、 0 がいくつあるか数えるのは大変なので、 指数形式で表示したい。
set format y "10^{%L}"
set format x "10^{%L}"
のように指定すると指数形式で書いてくれる。

(2019/2/6記) 対数プロットして直線状になったとして、 傾きを測る or 確認することがしばしば行われる。 真面目にやるならば1次回帰曲線を求めたりするのかもしれないが、 大まかに調べるために、脇に三角形を描く方法が最近は良く使われている。 例えば上のデータの場合、 誤差が概ね $ N^{-2}$ に比例すると考えられるので、 斜辺の傾きが $ -2$ の直角三角形を描く。

draw-error.gp

# draw-error.gp

set logscale
set format x "10^{%L}"
set format y "10^{%L}"

# 斜辺の傾きが -2 の三角形の準備
a=1000.0; # グラフの中に入るように三角形の高さを調整
x1=500; x2=900;
y1=a*x1**(-2);y2=a*x2**(-2);
# print sprintf("x1=%f, y1=%e, x2=%f, y2=%e", x1,y1,x2,y2);
set object 1 polygon from x1,y1 to x2,y1 to x2,y2 to x1,y1 fs empty border

plot "error.tbl" with linespoints

set term png
set output "draw-error.png"
replot

図 8: draw-error.gp の結果: 斜辺の傾きが$ -2$の直角三角形を添える
Image drawerror

(もっとうまい描き方はないものか…)



桂田 祐史