|HOMEへ| PC解説| gnuplot|

Gnuplotでグラフ作成

目次

測定点のプロットの手順

データファイル(sample.dat)スクリプトファイル(point.gnp)を作成して グラフを描かせる方法を紹介します.

作業手順は次のとおりです.

  1. データファイルを作る
  2. スクリプトファイルを作る
  3. グラフを描く
  4. グラフを装飾(スクリプトファイルの修正1)
  5. イタリック文字(スクリプトファイルの修正2)

(1) データファイルを作る

次のデータをファイル(sample.dat)に書き込みます. ファイルの作成にはemacsやメモ帳などのエディタを使ってください.

# 2017/5/4の実験結果
# I(A)  Vab(V)   Vcd(V)
1.3      2.33    1.0
2.00     4.55    4.10
3.31     7.78    9.24
4.03     8.51   16.10
5.70    12.70   27.32
6.20    12.40   36.40
7.00    14.30   48.23
8.00    15.90   66.22
9.20    18.90   82.26
10.00   19.20   99.89

ここで先頭2行の「#」で始まる行は, 「この行はコメントですよ.」という意味で, gnuplotは無視しますので, 測定条件の記入など,メモに用いてください. つまり, このデータファイルは「1.3 2.33 1.0」の行が最初の行となります.

コメント行には, (1)実験のパラメータ, (2)何の値なのか, (3)単位など, なるべく詳細に情報を書いておくと良いでしょう. データファイルの数が増えてきたときや後で作業する必要が出てきた時など 何かと重宝します.

(補足1) コメント行を表すマークはgnuplotの次の命令で変更可能です. 次の例では「%」をコメント行としています.

set datafile commentschars "%"

(補足2) データの区切り記号も指定可能です. 次の例ではコンマ(,)を指定してみます.

set datafile separator ","

(2) スクリプトファイルを作る

スクリプトファイル(point.gnp)を作成します. (「リンク先を保存する」か、 エディタに「copy」「paste」で貼りつけた後、 「point.gnp」という名前で保存してください. )

スクリプトファイル(point.gnp)中で「#」で始まる行は 全てコメントですので, 有効なコマンドは次のとおりです.

set xlabel 'Current  I  [A]'
set ylabel 'Voltage   V  [V]'
plot  'sample.dat' using 1:2 with points pt 6
pause -1 "press [Enter] key to proceed or \"^C\" to quit."
(環境によっては円マーク(¥)が見えますが, バックスラッシュ(\)です)

ここでは次のような指示をgnuplotに与えています.

(補足) データファイルをもとに計算し, プロットする方法
先の例では, データを直接プロットする場合を説明しました. データファイルから加工して表示したい場合もあります. 例えば2行目のデータを50で割った値を表示する(抵抗50オームの両端電圧がデータとなっていて, この抵抗に流れる電流を求める)場合には, usingの中身をかえて次のようにします.
plot [0:11][0:110] 'sample.dat' using 1:($2)/50 with points pt 6
ここで「$2」が2行目のデータを表します.

同様に2行目と3行目の比率を計算して表示する場合には次のようになります.

plot [0:11][0:110] 'sample.dat' using 1:($2)/($3)*100 with points pt 6 
先に述べたように, これら 加(+)減(-)乗(*)除(-)の他にも, べき乗(($2)**3) や 各種関数(exp($1) * sin($2))など も使用可能です.

(3) グラフを描く

  1. 次のいずれかの方法で, 先に保存したスクリプトを実行します.
  2. スクリプトが問題なく実行されれば, 次のようなグラフがでてきます.
    point1 on xwm
  3. スクリプトの「pause -1」で一次停止しているので, グラフ上で「q」キーを押すと, グラフが消えます.
  4. ターミナル上で [Enter]キー(Returnキーとも言う)を押すとスクリプトの最後まで到達して終了します.

    スクリプトを途中終了したければ, [ctrl-C]を入力(Controlキーを押しながらCキー を押下)します.

また, plotの行を次のように変更すると, 2つのデータを同時にプロットできます. データの1列目を横軸に,2列目を縦軸に「pt 6」の形式で,3列目を縦軸に「pt 7」の形式で出力させます.
plot  'sample.dat' using 1:2 with points pt 6,\
      '' using 1:3 with points pt 7
(変更後のファイルはpoint2.gnp) ここで, このファイルを用いて, 先と同じ手順で実行してみると次のグラフが得られます.
point2 on wxt

(4) グラフの装飾

ここまでで, グラフにいくつかの不満がでてきます.

  1. グラフの領域とプロット点のバランスが悪い
  2. 凡例がプロットと紛らわしい
  3. 凡例のタイトルが他者から理解不能
  4. 軸の数値を自分好みに変更したい
  5. 実験条件などを記入したい

そこで, 次のように修正してみます.

set xlabel 'Current  I  [A]' 
set ylabel 'Voltage   V  [V]'
set xtics 5
set mxtics 5
set ytics 50
set mytics 5
set key reverse at graph 0.2, 0.8          # 凡例の位置
set label 1 at graph 0.1, 0.9 "example of measurement" 
set label 2 at graph 0.1, 0.85 "T = 25 {/Symbol\260 }C"
plot [0:11][0:110] 'sample.dat' using 1:2 with points pt 6 title 'V_{ab}',\
                   '' using 1:3 with points pt 7 title 'V_{cd}'

修正したスクリプトファイルpoint3.gnpを実行すると, 次のようなグラフが得られます.

point3 on wxt

ここで初めて出てきた命令を次に説明します.

(5) イタリック文字

論文などの作法として, 変数文字は斜体(イタリック体)で表す必要があります. 上のグラフでは, 縦軸の「V」, 横軸の「I」, 注釈の「T」, 「V」が その対象となります.

次のように当該の部分を修正することで解決します. 必ずenhancedモードを指定してください(現在使用しているwxtではenhancedはデフォルトで設定済み).

set xlabel 'Current  {/:Italic  I}  [A]' 
set ylabel 'Voltage   {/:Italic  V}  [V]'
set label 2 at graph 0.1, 0.85 "{/:Italic  T} = 25 {/Symbol\260 }C"
plot [0:11][0:110] 'sample.dat' using 1:2 with points pt 6 title '{/:Italic  V}_{ab}',\
'' using 1:3 with points pt 7 title '{/:Italic  V}_{cd}'
(補足) フォントを指定したい時には次(Timesに指定の例)のようにします.
set xlabel 'Current  {/Times:Italic  I}  [A]' 

最終的なスクリプトファイルpoint4.gnpを実行すると, 次のようなグラフが得られます.
point4 on wxt


BACK(gnuplot) | MENU(ページトップ)| NEXT(測定データと線引き)
Ken-ichi Yamamoto
e-mail:yamamoto@eee.u-ryukyu.ac.jp