さっそく、グラフを書いてみましょう。
「1列目のデータをx軸に、2列目のデータをy軸にとったグラフ」、を書くには、gnuplotのコマンドラインで以下のように入力します。
gnuplot> plot 'data.txt' using 1:2 title 'graph1' with linespoints
「graph1」というタイトルのグラフが描けました
(タイトル表示は省略できます)。
ここで「with linespoints」は、「点と線で描画する」という意味です。
なお、「using」「title」「with」は、
この順番で書かないとエラーになるようです。
線や点の種類を設定するときは、例えば以下のように、末尾に2つの数字を付加します。
gnuplot> plot 'data.txt' using 1:2 title 'graph1' with linespoints 5 3
最後の2つの数字のうち、1つ目(上では「5」)が線種を、
2つ目が(上では「3」)が点種をあらわします。
線種は1から9まで指定でき、
「1=赤」「2=緑」といった具合に色をあらわします。
ただし、白黒プリンタに出力するときは、「1=実線」になり、
2以降は種々の破線や点線になります。
一方、点種は1から6まで指定でき、
「1=菱形」「2=十字形」といったように記号をあらわします。
「with」部分を以下のように変えることで、多彩なグラフが描けます
(省略すると「with points」が仮定されます)。
with points ←点で描画する
with lines ←線で描画する
with boxes ←棒グラフに描画する
with steps ←階段状に描画する
with impulses ←インパルス(垂線)で描画する
with dots ←小さな点で描画する(データ点が極めて多数あるときに有用)
なお、「with points」で描く際も、点種を指定するには、
gnuplot> plot 'data.txt' using 1:2 title 'graph1' with points 5 3
と、書かねばなりません。この場合、線種に相当する値(上では「5」)は無視されます。
今度は、
「1列目のデータをx軸に、2列目のデータと3列目のデータをy軸にとったグラフ」、
を書きましょう。以下のようなコマンドで実行できます。
gnuplot> plot 'data.txt' using 1:2 title 'graph1' with lines,'data.txt' using 1:3 title 'graph2' with lines
2本のグラフが描けたでしょう。
さらに、データファイルをちょっと書き換えて
1.2 1.5 2.3
1.3 1.6 2.2
1.4 1.7 2.2
1.5 1.75 2.5
としてみましょう。2行目と3行目の間に改行をいれただけです。
このデータを「linespoints」で同様にグラフ化してみましょう。
2番目のデータと3番目のデータの間には、線が引かれていません。
「lines」のときも同様です。
慣れてくると、長いコマンドをいちいち入力するのが面倒になるかもしれません。
そんな場合には、省略形を用いると良いでしょう。
たとえば、
gnuplot> pl 'data.txt' u 1:2 w lp
は、
gnuplot> plot 'data.txt' using 1:2 with linespoints
と等価です。
描いたグラフを消去するときは、以下のコマンドで実行できます。
gnuplot> clear
さらに多彩なグラフの描き方については、
第7章で扱います。
最低限のグラフの描き方は上記で終わりです。
ここでは、装飾の設定を手動で行います。
まず、描画範囲を手動で設定しなおしましょう。
グラフが描かれている状態で、以下のように入力します。
gnuplot> set xrange [1:1.6]
gnuplot> set yrange [1:3]
gnuplot> replot
これで、x軸の範囲が[1,1.6]に、y軸の範囲が[1,3]に設定されたグラフが描けます。
最後の「replot」は、「直前に行ったplot命令を再実行する」というコマンドです。
さらに、
gnuplot> set grid
gnuplot> replot
としてみましょう。目盛の位置に線が引かれます。
線を消したければ、「grid」の代わりに
「nogrid」として同様に設定します。
目盛の位置も手動で設定しましょう。
gnuplot> set xtics 1.1, 0.1, 1.3
gnuplot> replot
と実行してみましょう。
これは、「x軸上で、1.1から1.3までを、0.1刻みで目盛を指定せよ」という意味です。
結果として、「x=1.1, 1.2,1.3」の3か所に目盛が刻んであるはずです。
y軸についても「ytics」として、同様の設定ができます。
これとは別に、目盛を一つ一つ設定する方法もあります、
gnuplot> set xtics (1.1, pi/2, 1.3)
gnuplot> replot
何がプロットされたかは、お分かりでしょう。
ただし、これでは、円周率が有限桁の小数で表示されてしまいます。
その場合、
gnuplot> set xtics (1.1, "PI/2" pi/2, 1.3)
gnuplot> replot
とすれば、良いでしょう。
なお、ここでの円周率(「pi」)は、適当に打ち切られた値が入力されるようなので、
気をつけてください。
数値の表示桁数まで設定したい場合は、以下のように設定します。
gnuplot> set format x "%7.3f"
gnuplot> set xtics (1.1, pi/2, 1.3)
gnuplot> replot
ここで「"%7.3f"」は、「全体では7桁、小数点以下3桁」という形式です。
「 format x ""」は、目盛だけ表示され、数値は表示されません。
デフォルト値(自動設定された値)に戻したいときは、
以下のように、指定無しで「xtics」を行います。
gnuplot> set xtics
gnuplot> replot
グラフの装飾について、他のコマンドをまとめておきます。
「x」を「y」に変えれば、y座標の設定になるのは、言うまでもないでしょう。
set noxtics ←目盛を表示しない
set logscale x ←対数軸に設定する。
set nologscale x ←上記コマンドのキャンセル。
set xzeroaxis 1 ←y=0の位置に、線を引く。
最後の数字(例では「1」)は、線の種類(第2章参照、例では実線になる)で、省略可。
set title "example" ←グラフにタイトルをつける。例では「example」。
set xlabel "data 1" ←x軸にタイトルをつける。例では「data1」。
set size 0.721,1.0 ←グラフのサイズを変更する。例では、x方向に0.721倍、y方向に等倍する。
この例の場合、グラフがちょうど正方形になる。
set size square ←グラフがちょうど正方形になる。(古いバージョンのgnuplotでは、未サポート)
設定した環境パラメータを見たい場合は、
「set」のかわりに「show」を使います。
例えば、「show title」とすれば、
現在設定されているタイトル(上の例では「example」)が表示されます。
「show all」で全ての環境パラメータを表示できます。
この場合、自動設定されている環境パラメーターも全て表示されますので、
(ここで説明していない環境パラメーターも含めた)長いリストが表示されます。
グラフの印刷は、
「グラフを一旦画像ファイル(PostScript形式)で保存して、そのファイルを印刷する」、
という手順で行います。
まず、以下のように、出力先を設定します。
gnuplot> set output "graph.ps"
gnuplot> set terminal postscript
この後、これまでと同様に描画コマンドを実行していきます。
今度は、グラフが画面に現れません。
代わりに、「graph.ps」というファイルが、ディレクトリ上にできています。
このファイルを印刷します(印刷の仕方は別紙を見て下さい)。
画面への表示に戻したいときは、
gnuplot> set terminal x11
とします。
実は、gnuplot起動時には、暗黙のうちに上記のコマンドが実行されています。
起動時の画面の最後に、
Terminal type set to 'x11'
とでているのが、それに相当します。
これで、最低限の印刷手順は終わりです。以下は飛ばしても構いません。
グラフは通常、A4横向きに出力されます。縦向きに印刷する場合は、
gnuplot> set terminal postscript portrait
と指定します。ちなみに、横向きの指定を明示的に行うには、
「portrait」の代わりに「landscape」とします。
次に、線種の手動設定を考えます。
第2章で見たように、白黒プリンターで印刷する場合、
線種は「1=実線」になり、2以降は種々の破線や点線になります。
これだと、たくさんの線が描かれる場合に、見にくいかもしれません。
そこで、これらの線種を「太さの違う実線」に変えることを考えます。
gnuplot> set terminal postscript
gnuplot> set linestyle 1 linetype 1 linewidth 1.0
gnuplot> set linestyle 2 linetype 1 linewidth 2.0
「linetype 1」が実線を指し、
「linewidth」で線幅の倍率を指します。
こうして定義したのち、以下のようにグラフを描きます。
gnuplot> plot 'data.txt' using 1:2 with lines 1 linestyle 1,'data.txt' using 1:3 title 'graph2' with lines linestyle 2
太さの違う2種類の実線で、グラフが描けたはずです。
「linespoints」で描く場合の点種も、同様に定義できます。
例えば、
gnuplot> set terminal postscript
gnuplot> set linestyle 1 linetype 1 linewidth 1.0 pointtype 2 pointsize 5.0
gnuplot> set linestyle 2 linetype 1 linewidth 2.0 pointtype 7 pointsize 1.0
のように定義したのち、上と同様のグラフを「linespoints」で描いてみて下さい。
次は、添字やギリシャ文字の印刷についてです。
これらは、画面(x11)描画では不可能らしく、正しく表示されません。
印刷する場合は、以下のように、
ファイル形式を「postscript enhanced」と設定することで可能になります。
gnuplot> set terminal postscript enhanced
この設定下において、以下のようにして出力できます。
ギリシャ文字は、対応するアルファベットで指定します。
a^{b}←「ab」と描画
a_{b}←「ab」と描画
a@^{b}_{c}←上下両方に添字が付く。
{/Symbol G}←「Γ」(ガンマ)と描画
{/Symbol g}←「γ」(ガンマ)と描画
ちなみに、アルファベットとギリシャ文字の対応は、以下です。
(物理でよく使われるものだけをあげてあります。)
α(a)、β(b)、γ(g)、δ(d)、ε(e)、ζ(z)、η(h)、θ(q)、κ(k)、λ(l)、
μ(m)、ν(n)、ξ(x)、π(p)、ρ(r)、σ(s)、τ(t)、
φ(f)、χ(c)、ψ(y)、ω(w)、
Γ(G)、Δ(D)、Θ(Q)、
Λ(L)、Ξ(X)、Π (P)、Σ(S)、Φ(F)、Ψ(Y)、Ω(W)、
応用例として、対数プロットを例にとります。
通常は「1」「10」「100」という風に描画されますが、これを
「100」「101」「102」といった、べき乗表示で印刷します。
gnuplot> set terminal postscript enhanced
gnuplot> set logscale y
gnuplot> set format y "10^{%L}"
gnuplot> set key spacing 1.4
gnuplot> plot 'data.txt' using 1:2, title "{/Symbol G}_{a}", plot 'data.txt' using 1:3 title "{/Symbol g}^{b}
ここで「set key spacing 1.4」は、
グラフタイトル間の改行間隔を1.4倍にとる、という意味です。
これを設定しないと、2つのグラフタイトル(「Γa」と「γb」)が重なってしまうでしょう。
次は、フォントの種類や大きさを指定します。全体を指定するには、例えば、
gnuplot> set terminal postscript enhanced "Times-Roman" 14
とします。
フォントは、"Helvetica"、"Times-Roman"、"Courier"、などが一般的のようです。
「14」というのは、14ポイントの大きさ、という意味です。
省略すると、「"Helvetica" 14」の設定になります。
文字ごとに指定することもできます。タイトルを例にします。
フォントの大きさを絶対値で指定するには、
gnuplot> set title "{/Times-Roman=40 G} {/Courier=40 G} {/Helvetica=40 G} {/Symbol=40 G}"
とします。印刷してみると、
タイトル欄に、3つの「G」と一つの「Γ」が現れたはずです。
このときの文字サイズが40になっています。
一方、フォントの大きさを相対値で指定するには、
gnuplot> set title "{/Times-Roman*2.0 G} {/Courier*2.0 G} {/Helvetica*2.0 G} {/Symbol*2.0 G}"
とします。印刷してみると、
文字サイズが(全体に対する設定より)2倍になっています。
いろいろなフォントを組み合わせると、例えば、こんなことができます。
gnuplot>set title "{/Helvetica e}^{- {/Courier i} {/Symbol g}^2}"
最後に。上で述べた設定のうち、複数を同時に行う場合は、
指定の順番に気をつけてください。以下の順番で指定します。
gnuplot> set terminal postscript portrait enhanced "Times-Roman" 14
第2章でとりあげた以外にも、様々なグラフを描くことができます。
ここでは、いくつかを紹介します。
(a)エラーバーが付いたグラフを描く
エラーバーが付いたグラフを描くには、データファイルの形式を、
行ごとに以下のように書かねばなりません。
(x座標) (主データ) (エラーバーの下限値) (エラーバーの上限値)
たとえば、「data2.txt」として、以下のようなファイルを作成します。
1.0 2.0 1.9 2.1
1.1 2.2 1.5 2.3
1.2 2.1 2.0 2.2
1.3 1.9 1.8 2.2
gnuplotコマンドラインで、
gnuplot>plot 'data2.txt' with errorbars
と入力すれば、エラーバー付きのグラフが描かれます。
(b) 2つのY座標をもつグラフを描く
(この機能は、古いバージョンのgnuplotでは未サポートのようです)。
左右に別々のy座標を割り当てたグラフを描きます。
「y」の代わりに「y2」と指定します。
例を示すので、それで理解できると思います。
gnuplot> set yrange [1:2]
gnuplot> set y2range [2:3]
gnuplot> set y2tics
gnuplot> set grid
gnuplot> plot 'data.txt' using 1:2 axes x1y1,'data.txt' using 1:3 axes x1y2
ここで「set y2tics」を書かないと、
y2座標(グラフの右側)の目盛には、数値が現れないようです。
同様に、2つのx座標を(上下に)もつこともできます。
(c) 1ページに複数のグラフを描く
(この機能は、古いバージョンのgnuplotでは未サポートのようです)。
gnuplotのコマンドラインで、
gnuplot> set multiplot
とすると、コマンドライン表示が
「gnuplot> 」から「multiplot> 」に変わります。
後は、以下の例を試してみれば、理解できるでしょう。
multiplot> set origin 0,0
multiplot> set size 0.5,0.5
multiplot> plot 'data.txt' using 1:2 title 'graph1' with lines
multiplot> set origin 0,0.5
multiplot> set size 0.5,0.5
multiplot> plot 'data.txt' using 1:3 title 'graph2' with lines
「set nomultiplot」で元に戻ります。