第3回 gnuplotの使い方 (1/2)


1.gnuplotの基本操作

物理の研究において、グラフを書く技術は論文作成や説得力のあるプレゼンテーションをする上でとても重要なものです。Unix系のシステムにはgnuplotというプロット作成ソフトがあり、これを使うことで論文に載せられるようなきれいなグラフを作成することができます。

a) gnuplotの起動・終了とプロットの作成

まずターミナルを使って、Desktopに作成したcompphysのディレクトリに移りましょう。そこで以下のように「gnuplot」と入力して、enterを押してみましょう。するとgnuplotが起動します。

1+1

次に、このgnuplot上で早速関数をプロットしてみましょう。「plot sin(x)」と打ってenterを押しましょう。

1+1

すると次のような画面で、sin(x)のプロットが表示されます。

1+1

このように、gnuplotでは簡単な操作できれいなグラフを作成することができます。 gnuplotを終了するには、quit [enter]とします。

1+1

以下では、より詳細な使い方を解説していきます。 (quitしたままでは困るので、もう一度gnuplotを起動してください。)


b) グラフの重ね書き

先ほど書いたsin(x)の上に、別の関数を重ね書きしたいときはreplotコマンドを使います。「plot sin(x) [enter]」とした後に、「replot cos(x) [enter]」としてみましょう

1+1

すると、以下のようにcos(x)も同時に表示されます。

1+1

このように、replotコマンドを使えば簡単にグラフを重ね書きすることができます。

練習問題
  • sin(x), cos(x)に続けて、tan(x)もreplotしてみましょう。
  • いろいろ書いた図を消して最初の状態に戻したい場合は、reset [enter]とします。上で重ね書きした出来た図をresetして、もう一度sin(x)だけ表示してみましょう。
  • gnuplotには三角関数に加えてlog(x), exp(x), sqrt(x)などの組み込み関数があります。これらもプロットしてみましょう。

c) グラフの表示区域の設定

さて、sqrt(x)やlog(x)といった関数は負のxに対しては定義されていませんから、それを表示する場合はxが正の領域だけを表示させるのが普通です。このような「グラフの表示区域の設定」は以下のように行うことができます。

1+1

この中で、[0: ]がxの表示域を示しています。一般には[a:b]の形で入力することで、xがaからbまでのグラフを表示することができます。ただし上の例の[0: ]のように、片方を空欄にすることもできて、その場合はデフォルトの設定が適用されます。

y方向の表示区域も同様にして設定することができます。ここでは[0:4]としてみましょう。

1+1

さて、正しく設定されたか、グラフをプロットして確かめてみましょう。ここではsqrt(x)をプロットしてみましょう。

1+1

1+1

正しく設定できているようです。設定をデフォルトに戻したい場合はreset [enter]としましょう。

練習問題
  • xを0から5, yを0から100の範囲で、exp(x)をプロットしてみましょう。
d) グラフのラベル・キー設定

論文に載せるグラフには、グラフの縦軸と横軸が表す変数名を書いておく必要があります。これは以下のように、set xlabelというコマンドを使って設定することができます。

1+1

ここでは、x軸のラベルを単に「x」、y軸の名前を「sin(x)」として、sin(x)をプロットみました。(x,yの範囲は一度resetして、デフォルトの設定を使っています。)プロットの結果は以下の通りです。

1+1

確かに軸のラベルが設定どおりになっていますね。

さて、図の右上に、sin(x)と書かれていますが、これはもちろん「図中の線がsin(x)を表すよ」という説明として書かれているわけです。この説明部分は「key(キー)」と呼ばれます。しかし、場合によってはこのkeyの内容も自分の思うように変更したい場合もあります。この場合はplot sin(x)としていたところを、以下のように変更します。

1+1

すると、以下のようにkeyの内容も変更することができます。

1+1

練習問題
  • 「plot sin(x) notitle」とすると、key自体をを消すことができます。これを試してみましょう。

e) 関数の定義

gnuplotでは、自分で関数を定義してプロットすることもできます。例えばf(x)=3 x^2+2 x+4という関数をプロットしたい場合は、以下のようにまず関数を定義してからプロットします。

1+1

(一行目はこれまでの設定をresetしています。)プロットの結果は以下のようになります。

1+1

式の書き方はMathematicaと少し違っていて、少し注意が必要です。例えばxの2乗はMathematicaではx^2でしたが、gnuplotではx*xあるいはx**2と表記します。割り算はMathematicaと同じく/を用います。

練習問題
  • 好きな関数を定義して、プロットしてみましょう。

f) 出力ファイルの設定

さて、これまでの操作を一通り覚えると、好きな関数のグラフが自由に書けるようになると思います。しかし、実際に論文に図を張り付けるためには、図を何らかのファイルの形式で出力しなければいけません。ここではeps形式で出力する場合を例に、その方法を説明します。

まずgnuplot上で、「set terminal postscript eps [enter]」としましょう。すると以下のような画面が表示されます。

1+1

これでeps形式の指定ができたことになります。さらに、出力先のファイルを指定するために、以下のように入力しましょう。

1+1

これで出力先がtest.epsというファイルに指定できたことになります。試しにここでsin(x)をプロットしてみましょう。そして出力先のファイルができているか確認するために、quitでgnuplotを終了しましょう。

1+1

lsコマンドでファイルを調べてみると、以下のようにtest.epsが確かに出来ています。

1+1

Unixにはepsファイルを見られるソフトがいくつかありますが、ここではgsを使ってみることにします。以下のように「gs test.eps [enter]」とするとファイルの閲覧ができると思います。うまく出力されていたでしょうか。(gsを終了したいときは、gnuplotと同じくquit [enter]としましょう。)

1+1


Home Top Back Next