howto/gnuplot

一行メモ


グラフ軸など

set title 'タイトル'  #グラフのタイトル
set xlabel "らべる"   #横軸のラベル
set ylabel "らべる"   #縦軸のラベル
set xtics rotate by -90  #目盛の数字を-90°回す;もとに戻すには set xtics noroatte
set format y "%.2f"      # y軸の表示形式の指定
set yrange [*:*] ; replot  #軸範囲を自動設定に戻す
set ytics autofreq  # y軸の目盛を自動に戻す
set mxtics 2  #x軸の副目盛数
set mytics 2  #y軸の副目盛数
set grid ; replot        #方眼グリッドを引く 
set grid mytics; replot  #副目盛りにも方眼グリッドを引く
set logscale y    #対数グラフにする。戻すときは unset logscale y

plot

using 1:(-$7) などができる。ここで$7はカラム番号である(ファイル内データの7番目のカラム)、 $7の符号を逆転させている。また、log10(), abs() などの関数も使える。

plot 'output.txt' u 1:(sqrt($4)) every w l    #例
plot 'output.txt' u 1:2 every 51 w l
plot 'list.libxc_graph' using 2:1 with impulses title '# of paper in the libxc Mar 28'
plot 'list.libxc_graph' using 2:1 with boxes title '# of paper in the libxc'
(例) 縦長のグラフを横に2つ並べる
set size 0.5,1.0
set multiplot
set origin 0.0,0.0 ; plot sin(x)
set origin 0.5,0.0 ; plot cos(x)
unset multiplot

plotの基本

次のようなファイル tmp.trjがあったとする。

  0.03125    0.00000    0.00000    0.00000    0.00000    0.00000    0.00000    0.00000    ...
  0.06250    0.00000    0.00000    0.00000    0.00000    0.00000    0.00000    0.00000    ...
  0.09375    0.00000    0.00000    0.00000    0.00000    0.00000    0.00000    0.00000    ...
  ...

1列と2列、1列と9列、1列と10列、を使って3本のグラフを描く。

$ gnuplot
gnuplot> plot "tmp.trj" u 1:2 w l, "tmp.trj" u 1:9 w l, "tmp.trj" u 1:10 w l

または、リモートログイン時は
(たとえば windows PC(ホスト名がhogehoge)から端末で 別のマシンにログインしており、 別のマシンで実行した gnuplotのグラフをwindows PCに表示したいとき)

$ DISPLAY=hogehoge.eit.hirosaki-u.ac.jp:0 gnuplot

もしくは、sshリモートログイン時に -Yオプションを付けていた場合などは、単に、

$ gnuplot

とする。

関数の定義

deg(x)=360.0/pi*x

rad(d)=pi/360.0*d

その他

(例)plotでファイルの先頭と末尾の何行かを除く
plot '< cat hogehoge.sup | tail -n +5 | head -n -2'
clear  # グラフの消去
reset  # 設定の初期化(表示領域をデフォルトにもどす)
show variable  #ユーザ変数の一覧
undefine fn  # 変数の取消
show format # 表示形式の表示
using -> u
with lines -> w l
w lp -> with linespoints
lw 2  #ライン幅
ps 2  #プロット点サイズ
set terminal   #ターミナルの一覧を表示する(説明つき)

show terminal
show term      #利用中のターミナルの種類を知る
set term postscript [colorなど]    #変更
set term png
set term x11

show output    #利用中の出力先を知る
set output "output.ps" #-> lprプリンタ          #印刷?

save "output.plt" #-> load "output.plt" できる  #現在の状態を保存

Ubuntu 16.04 では 14.04のように wxt は簡単には利用できなくなった。 代わりに gnuplot-qt パッケージをインストール(gnuplot-x11 と入れ替える)して、 set term qt を使うのが良い。

gnuplotで作成したGIFアニメ→adobe premiere elementsで単に読み込む。
→右上の書き出し・配信→携帯電話・携帯プレイヤ→種類はApple TV,iPad,iPhone4の720p 29.97で良い。

アニメーション表示やgif動画の作成

# 2018/12/16

f2='demoga4b.vCFEM2.dx010dt0.0005.trj-linex'
t0 = 0.0
x0 = 5.0
px = 4.0
dt       = 0.0005
maxstep  = 150000
trjevery =   1000

nframe = maxstep / trjevery  # number of frame data

set term qt enhanced size 1200,400  #ターミナルqtのキャンパスサイズを指定

#gifアニメを作るときは、次の2行をコメントアウトを外す。
# set term gif enhanced animate delay 20 optimize size 1200*1.5,400*1.5
# set output "temprev.gif"

do for [ frame = 0 : nframe : 1 ] {
#--------------------------------------------------------------------------------
time   = t0 + frame * trjevery * dt

packetcenter = x0 + px * time
packetwidth  = 2.5 + 5.0 * time

xrangemax = packetcenter + packetwidth
xrangemin = packetcenter - packetwidth
yrangemax = 1.0
yrangemin = -yrangemax

set xrange [ xrangemin : xrangemax ]
set yrange [ yrangemin : yrangemax ]  #自動にするときはコメントアウトする
set grid

set title  font "Arial,16"; set title  "Time evolution of a gaussian wave packet"
set xlabel font "Arial,16"; set xlabel "x-axis (bohr)"
set ylabel font "Arial,16"; set ylabel "{/Symbol y}(x,t)"
set key    font "Arial,16"; set pointsize 8  #凡例文字、ポイントサイズ
set tics   font "Arial,12"; set format x "%5.0f"; set format y "%5.2f" #目盛文字、フォーマット

set mytics 5  #副目盛の数
set grid mytics

strtitle(frame) = sprintf("t=%5.3f au ( frame %d )", time, frame )
unset label
set label f2               font 'Arial,11'  at graph 0.02, 1.03
set label strtitle(frame)  font 'Arial,18'  at graph 0.55, 0.70
set label "{/Symbol y}(x,t=0) =(2 {/Symbol p} w^2)^{-1/4} exp[-(x-x_0)^2/(4w^2) + i p_x(x-x_0)]" \
          font 'Arial,18'  at graph 0.02, 0.9
set label                                                          "where  x_0=5, p_x=4, w=0.5" \
          font 'Arial,14'  at graph 0.03, 0.8

f2ps=1
f2pe=5
plot \
     f2 u f2ps:f2pe+1  every ::0:frame::frame w l    lc rgb "blue"   title "  Re[{/Symbol y}(x,t)]", \
     f2 u f2ps:f2pe+2  every ::0:frame::frame w l    lc rgb "green"  title "  Im[{/Symbol y}(x,t)]", \
     f2 u f2ps:f2pe+0  every ::0:frame::frame w l    lc rgb "red"    title "  |{/Symbol y}(x,t)|^2", \

#pause 0.1
#pause 0.1
if( frame ==  0 ) {
    pause 2.0
}
if( frame <= 10 ) {
    pause 0.25
}
if( frame <= 20 ) {
    pause 0.25
}
if( frame ==  nframe ) {
    pause 2.0
}
#pause -1

#--------------------------------------------------------------------------------
}
unset output  #STDOUTになる(see: show output)
       
print 'the end'
print 'to reread, press enter' ; pause -1 ; reread
pause -1

リンク・マニュアルなど

色名の一覧など

色の一覧 (Color-name and point-shapelists for gnuplot 4.6.3)
こちらのページを参照のこと。

   colorname-list2modthumb.png

線の太さやマーカ
$ gnuplot
gnuplot> test

nowrap

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS