2 グラフ作成

2.1 gnuplotとは

gnuplotは簡単に2D,3Dのグラフが作成できるフリーのソフトウェアーである.単純なグラ フから,学術論文用の高品質なグラフまで作成可能で,広く普及している.名前にgnu とついているが,Free Software Foundation (FSF)が進めている GNUプロジェクト2とは関係が無い.gnuplotの読み方は「ニュープロット(あるい は,ヌープロット)」ではある.間違いではあるが,「グニュープロット」と呼ばれることも多い.

gnuplotはUNIXに限らずWindowsやMachintoshでも動作し,Excelとくらべものにならない くらい美しいグラフの作成が可能である.しかも,フリーである.諸君は卒業研究の グラフ作成に使うのが良いだろう.実験実習程度のグラフならExcelでも作成可能ではあ るが,そのグラフは醜く,とても科学技術の報告書や論文に載せるクオリティに達してい ない.

さらに,gnuplotはC言語などプログラミング言語と組み合わせて使うと,様々な処理が自 動的にできる.そのようなことから,私はコンピュータープログラムによる数値計算の結 果の表示に使っている.

マニュアル類はwebにたくさんある.情報が必要になれば,以下のサイトを調べるのが 良いだろう.

http://t16web.lanl.gov/Kawano/gnuplot/

http://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/gnuplot-intro/

2.2 起動と終了

簡単な操作方法を述べるが,本当は,先ほど示したwebページを見て各自学習する方が良 い.まずは,gnuplotを立ち上げてみよう.以下のコマンドを端末に入力する.

	$ gnuplot

すると,gnuplotが立ち上がり,コマンド入力画面になる.終了したい場合は,

	gnuplot> exit

とする.

2.3 2次元グラフ

グラフを描く前に,サンプル数を設定する.計算点の数が少ないと,グラフがでこぼこす る.

	gnuplot> set samples 1024

これで,計算する点の数が1024になった.これでもでこぼこする部分があれば,サンプル 数を増やせ.

まずは,三角関数のグラフを書いてみよう.以下のコマンドを入力する.


	gnuplot> plot sin(x)

$ \sin$関数のグラフが描けただろう.描画範囲を変えたい場合は,

	gnuplot> plot [0:6.28] [-1.5:1.5] sin(x)

とする.同時に複数のグラフを各場合は,次のように関数を並べればよい.

	gnuplot> plot [-6.28:6.28] [-1.5:1.5] sin(x),cos(x),tan(x)

次のようにすると様々なグラフが描ける.

gnuplot> plot x**3+x+1 $ x^3+x+1$
gnuplot> plot x**0.5 $ x^{0.5}$
gnuplot> plot log(x) $ \log_e(x)$
gnuplot> plot log10(x) $ \log_{10}(x)$
gnuplot> plot real(exp({0,1}*x)) $ \Re{(e^{ix}})$
gnuplot> plot sqrt(x) $ \sqrt{x}$
さらに,定義した関数のグラフを書くこともできる.

gnuplot> f(x)=sin(x)  
gnuplot> g(x)=cos(x)  
gnuplot> plot f(x)+g(x), f(x)*g(x)  

[練習1]
以下の関数のグラフを作成せよ.

  $\displaystyle \sin(x)\cos(x)$   $\displaystyle \sin^2(x)$   $\displaystyle \sin(x)+\cos(x)$      
  $\displaystyle xe^{-x}$   $\displaystyle x-\frac{x^3}{6}+\frac{x^5}{120}-\frac{x^7}{5040}$   $\displaystyle \cos(x),\,\sin(x)$      

gnuplotには付録の表2のような関数が用意されて いる.普通に使う関数はほとんど用意されているし,複素数もサポートされている.複素 数は,実数部,虚数部のように記述する.すなわち,


gnuplot> {1,0} 実数の1を表す.
gnuplot> {0,1} 虚数単位$ i$を表す.
gnuplot> {5.3,6.8} $ 5.3+6.8i$を表す.

である.

2.4 3次元グラフ

3次元グラフも簡単にかける.3次元グラフの場合,右マウスでドラッグすると視点を変え ることができるのでおもしろい.

gnuplot> splot x**2+y**2 $ x^2+y^2$
gnuplot> splot x*sin(x+y) $ x\sin(x+y)$

3次元グラフで隠線処理が必要であれば,set hidden3dとする.また,表示するデー タ点は,set isosampleで設定する.たとえば,以下のようにすれば,隠線処理し,x方向とy方向とも40点のデータを出力する.


	gnuplot> set hidden3d
	gnuplot> set isosample 40,40
	gnuplot> splot 1/(x*x+y*y+5)*cos(0.1*(x*x+y*y))

2.5 媒介変数表示

媒介変数を使ったグラフの作成もできる.

	gnuplot> set parametric
	gnuplot> plot sin(5*t), cos(2*t+pi/2)

媒介変数表示を止めるためには,

	gnuplot> set noeparametric

とする.

2.6 ファイルのデータの描画

ファイルに格納されたデータをグラフ表示することもできる.講義では,三角関数の値が格納されたファイルをダウンロードして,それをグラフにする.表の各行には, $ \theta$ $ \sin\theta$ $ \cos\theta$ $ \tan\theta$の値が書き込まれている. このファイルのデータをグラフ化するときには,plotコマンドを使う. 引き続いて,ダブルクォーテーションでファイル名を囲む.最後に,usingを使って x座標とy座標が書かれている列を示す.具体的には,

	gnuplot> plot "trifunc.txt" using 1:2

である.各データ点を線で結びたければ,

	gnuplot> plot "trifunc.txt" using 1:2 with line

とする.複数のデータを一度に描くためには,

	gnuplot> plot "trifunc.txt" using 1:2 with line, 
                        "trifunc.txt" using 1:3 with line,
                        "trifunc.txt" using 1:4 with line

とする.ただし,改行しないで(Enterキーを押さない)記述する必要がある.これでは, $ \tan(x)$の値が大きすぎるので,プロットす るレンジを変える.以下のようにset xrange[ymin:ymax]でレンジを変えて, replotコマンドをつかう.

	gnuplot> set yrange[-1.5:1.5]
	gnuplot> replot

2.7 グラフのファイル出力

2.7.1 出力先の変更

gnuplotはディスプレイのみならず,グラフの図形ファイルを作成することができる.デ フォルトの出力先はディスプレイとなっているので,これまでのグラフは画面に描画され た.ディスプレイに表示されるだけでは不便なので,図形ファイルを作成する方法を示す.

諸君が使う代表的な出力先やファイルフォーマットを表1 に示す.ディスプレイからファイルに出力先を変更するには,次のようにする.


	gnuplot> set terminal emf
	gnuplot> set output "hogehoge.emf"

これは,出直先をemfフォーマットのファイルに変更して,ファイル名を hogehoge.emf としてい る.


表 1: 代表的な出力デバイスとフォーマットを表すset terminal オプション
出力先 説明
x11 UNIXのディスプレイ
windows Windowsのディスプレイ
emf Windowsでよく使われるデータのフォーマット
postscript UNIXで使われるデータフォーマット
gif webなどでおなじみ
png これもwebなどでおなじみ
epslatex LATEXを使う場合便利

2.7.2 MS wordに貼り付ける

gnuplotで作成したグラフをMS Wordに貼り付ける時は,Windows 標準の emf フォーマッ トが便利である.emf フォーマットのグラフは次のようにして作成する.

	gnuplot> set terminal emf
	gnuplot> set output "hoge.emf"
	gnuplot> plot sin(x)

最初の行で,出力先を emf ファイルに指定している.次の行で,出力ファイル名を hoge.emfとしている.拡張子は重要で,emf としなくてはならない.プログラ ムは拡張子でファイルの種類を判断しているからである.最後の行で,三角関数のグラフ を作成している.これで,正弦関数が書かれたファイル hoge.emf ができあがる.

これを MS Word に貼り付けるのは簡単である.

もし,emfフォーマットで張り付けができなければ,他のフォーマットを試してみる.

2.7.3 Starsuite に貼り付ける

学校のLinuxでは,office 環境として Sun microsystems の Starsuite が使えるように なっている.Starsuite へのグラフの張り付けもほとんど,MS Word と同じである.ここ ではあえて説明しないので,各自,実施して見よ.

2.7.4 LATEXに貼り付ける

LATEXというすばらしい文書作成ソフトウェアーがある.使い方はちょっと難しいが,長 い文書を作成する時は楽だし,なによりも出来上がりがすばらしい.本年度,諸君に配布 した講義ノートは全てLATEXを使っている.以下のようにしてグラフのファイルを作成 する.

	gnuplot> set terminal epslatex
	gnuplot> set output "hoge.eps"
	gnuplot> plot sin(x)

そうすると,hoge.eps と hoge.tex というファイルができあがるので,それをLATEXの ソースに以下のように組み込めばよい.


\documentclass[10pt,a4paper]{jarticle}
\usepackage{graphicx}
\begin{document}

\begin{figure}[hbtp]
  \input{hoge}
  \caption{三角関数のグラフ}
\end{figure}

\end{document}


ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成19年7月11日


no counter