gnuplotに関するメモ
gnuplot の基本操作をまとめておく。
2004-11-04(木), 2005-06-02 小修正
2006-07-05 インストール方法を追加
2006-10-12 dumb ターミナルを追加
2006-12-22 最小自乗フィット、表示ポイント数の変更、を追加
2008-08-29 二項分布の表示例を追加
2009-07-03 二項分布の表示例出の問題点を追加。
画像ファイルへの吐き出しを追加
処理の自動化を追加
2009-10-29 線の太さや色変更方法を追記
2022-03-02 学校指定ノートPC上のLinuxの場合について追記修正
2023-11-20 使用可能な関数を追記
--------------------------------------------------------
gnuplot のインストールの仕方。
(2006年秋以降の実習室デスクトップPCや学生ノートPCのLinuxには既にインストール
されているので以下の[1][2-a][2-b]操作は不要。
ただし gateway.edu.tuis.ac.jp にはインストールされてないかもしれない)
[1] ソースからインストールする場合
ダウンロード
学内にいるなら ftp://www.infosys.tuis.ac.jp/pub/gnuplot/
学外にいるなら ftp://ftp.gnuplot.info/pub/gnuplot/
にアクセスし、gnuplot-4.0.0.tar.gz をダウンロード
インストール(自分のマシンならば)
su でrootになったあと
# tar xvfz gnuplot-4.0.0.tar.gz
# cd gnuplot-4.0.0
# ./configure && make && make install
# cd ..
# rm -rf gnuplot-4.0.0
# rm -f gnuplot-4.0.0.tar.gz
[2-a] Vine Linux にインストールする場合
su - でrootになったあと
# apt-get update && apt-get -f install && apt-get install gnuplot
[2-b] CentOS にインストールする場合
su - でrootになったあと
# # yum -y check-update && yum -y install gnuplot
[3] 起動
単に gnuplot と入力
$ gnuplot
もし、[2-b]のようにホームディレクトリ内にインストールしたのであれば
$ ~/gnuplot/bin/gnuplot
--------------------------------------------------------
$ gnuplot
で起動
> quit
で終了。
--------------------------------------------------------
点データを読み込んでプロット(描画)する
例:
> plot "mono-k.dat"
でファイル mono-k.dat から
.89999998E+00 -.60864986E+02
.94999999E+00 -.60449627E+02
.10000000E+01 -.60014309E+02
.10500000E+01 -.59559414E+02
.11000000E+01 -.59085335E+02
..... ......
のような二次元データを読み込んでプロット(data style は.gnuplot で記述されて
いる)
data style を明示するには
> plot "mono-k.dat" with {lines, points, dots} のように書く。
> plot "mono-k.dat" w {l, p, d}
のように省略して書くことも可能。
複数の数値データをひとつのグラフにプロットするときは
> plot "mono-k.dat" w l,"poly-k.dat"w p
などのようにする。
--------------------------------------------------------
データを生成するときは、gnuplotだけではなくngraphを使う可能性も考慮して
# particle positions
.89999998E+00 -.60864986E+02
.94999999E+00 -.60449627E+02
..... ......
のようにコメント行は行頭に"#"を書き、数値区切りは半角スペース" " で生成する。
--------------------------------------------------------
関数形を知っていてそのグラフを描く場合は
> plot [xの範囲] [yの範囲] [関数式]
と書く。例:
> plot [0:2] x**2
複数の関数を描くときは
> plot [0:5][0:2.5] x**0.5+sin(x) w l, -0.466*x**2+1.88*x+0.427 w d
のように , で区切る。
--------------------------------------------------------
gnuplotで対数グラフを描く方法
> set logscale x x 軸を 対数スケールにする。1,10,100 の目盛になる
> set logscale y y 軸を 対数スケールにする。1,10,100 の目盛になる
> set logscale xy 2 x軸y軸両方を対数スケールにして、2,4,8,16 の目盛にする。
> set format y "10^{%L}" y軸を対数スケールにして、1,10,100 ではなく、
10^{0], 10^{1}, 10^{2} という目盛にする。
対数スケールをデフォルトスケールに戻すには。
> set nologscale
あるいは
> unset logscale
--------------------------------------------------------
3次元グラフをプロットする
・関数形がわかっている時
> splot [xの範囲] [yの範囲] [関数式]
例:> splot x**2+y**2
例:> splot [-2:2][-2:2] exp(-(x**2+y**2))
・データからプロットする時
以下のようなデータを用意しておく
#3-dim data x y z
-1.002 -21.986 3.36
-1.003 -20.097 3.65
.... .... ....
> splot "3-dim.dat"
--------------------------------------------------------
内容が
set term vttek
set data style lines
である .gnuplot というファイルをホームディレクトリーに作っておくと便利。
TeratermProなどを使ってWindowsからUnixマシンに接続し、そこでgnuplotでグラフ表示
したいときはTeratermProのメニュー内の setup の中に Auto switch (VT<->VTTEK)
という項目があるのでチェックを入れる。Unix側では .gnuplotに set term vttek と
書いておく。すると リモートのUnix上で
> plot [0:2] x**2
などとすると、ローカル側のWindowsでVTTEKが起動してグラフが表示される。
--------------------------------------------------------
もし X-term や vttek などのグラフィカルなターミナルを使用不能の場合でも
> set term dumb
としておくと、キャラクタ端末でグラフの雰囲気を掴むことができる。
--------------------------------------------------------
最小自乗法でフィット関数を求めることもできる。
以下は data.txt から最小自乗法で 直線フィットするやり方。(図は省略)
gnuplot> f(x)=a*x+b
gnuplot> fit f(x) 'data.txt' via a,b
[表示される内容は省略。とにかくa,bの値が出ると同時にそれがa,bに代入される]
gnuplot> plot f(x),'data.txt'
--------------------------------------------------------
表示ポイントの数の変更
関数を表示する際、gnuplotが勝手に等間隔でプロットしてくれるが、変動の激しい
関数をプロットする場合など、その間隔が荒いと感じるならば以下のように手動で
設定せよ。
gnuplot> set sample 1000 <==プロット点数を1000個に設定
設定をデフォルトに戻す時は
gnuplot> unset sample
その他の例:
gnuplot> set sample 21
gnuplot> plot [0:20] (20!/(int(x)!*(20-int(x))!))*0.3**x*0.7**(20-int(x)) w l
応用:二項分布の表示例
(gnuplotでは1000の階乗などは計算できないので、以下の例では100の階乗に留めている
ことに注意せよ!)
(gnuplotのn!の近似計算はなんか少しおかしいので、Stirlingなどで近似して数値計算
させた値とごくわずか異なることに注意せよ)
gnuplot> set sample 101
gnuplot> n=100
gnuplot> p=0.080808
gnuplot> plot [0:100] (n!/(int(x)!*(n-int(x))!))*p**x*(1.0-p)**(n-int(x)) w l
--------------------------------------------------------
グラフを画像ファイルに出力する
普通に表示して確認したあと
gnuplot> set term png
gnuplot> set output "hoge.png"
その後普通にプロットすると hoge.png に出力されるので $ eog hoge.png などで見て確認せよ。
--------------------------------------------------------
処理を自動化する
以下のような内容のスクリプトを作り、実行権を与えて実行する。
画像ファイル"uhoho.png" を作る場合。
#!/usr/bin/gnuplot -persist
set term png
set output "uhoho.png"
plot [0:30] [0:100] "ahoho.dat" w l, "ahoho.dat" w p
普通のgnuplot のグラフウィンドウで表示する場合
#!/usr/bin/gnuplot -persist
set term x11
plot [0:30] [0:100] "ahoho.dat" w l, "ahoho.dat" w p
--------------------------------------------------------
線の色や太さを変える(X11のみ。vttekでは色変更は線種変更になる)
・色変更
linetype (lt)
1: 赤 2: 黄緑 3: 青 4: ピンク 5: 水色 6: 黄色 7: 黒 8: オレンジ 9: 灰色
(ターミナルによっては -1 が黒の場合もあるようだ)
・太さ変更
linewidth (lw)
数値を書く。デフォルトは1
使用例:普通の二倍の線の太さで、黒い線を描きたいとき。
gnuplot> plot sin(x) lw 2 lt 8
--------------------------------------------------------
plotする領域はデフォルトで横長長方形だが、これを正方形にしたいときは
set size square をやればよい。
gnuplot> set size square
gnuplot> plot [0:10] exp(-0.5*x)*cos(4*x)
--------------------------------------------------------
gnuplotで使える関数
exp(x) 指数関数
log(x) 自然対数
log10(x) 常用対数
sin(x) 正弦関数
cos(x) 余弦関数
tan(x) 正接関数
asin(x) 逆正弦関数
acos(x) 逆余弦関数
atan(x) 逆正接関数
xの二乗などは、 x^2 ではなく x**2 と書かなくてはならないことに注意!
xの平方根は、sqrt(x)
--------------------------------------------------------
gnuplotに関する便利なHP
http://art.aees.kyushu-u.ac.jp/members/kawano/gnuplot/index.html
2005-06-02時点で確認したら消えてたので、以下のページを参照せよ。
http://ayapin.film.s.dendai.ac.jp/~matuda/Gnuplot/gnuplot.html
http://www.edu.ics.saitama-u.ac.jp/~eduics/lect/gairon/gnuplot/basics.html
http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/gnuplot-intro/
http://t16web.lanl.gov/Kawano/gnuplot/index.html <==超Cooool!
*****************************************************************************