gnuplot / postproc

図を描いたその後は...(その1)

作ったグラフをTeXの文書に貼り込みたい.

gnuplotのドライバにはlatexというのがあり,これを使えばグラフを
PicTeXにして出力してくれます.しかし,この方法は描く図によっては表示す
る点の数が非常に多くなる場合があり,TeXの処理がメモリ不足で出来なくな
ることがあります.従って,TeXに図を取り込む場合は,図をEPSで出力してお
いて,LaTeXのgraphicsパッケージで読み込む方が簡単です.

まず,gnuplotで図をプロットし,出力ドライバをenhanced EPSにして,
EPSのファイルを作っておきます.

 gnuplot> set term postscript eps enhanced gnuplot> set output "test.eps" gnuplot> set key left top gnuplot> set size 0.5,0.5 gnuplot> set xrange [0:4] gnuplot> set yrange [0:4] gnuplot> set xlabel "Energy [MeV]" gnuplot> set ylabel "Cross Section [b]" gnuplot> set linestyle 1 lt 1 gnuplot> set linestyle 2 lt 1 pt 7 gnuplot> # for gnuplot ver.4 gnuplot> # set style line 1 lt 1 gnuplot> # set style line 2 lt 1 pt 7 gnuplot> plot 0.2536*x+1.1717      title "LESQ fit"  >                                  with lines      linestyle 1, >             "test.dat" usi 1:2:3 title "data"  >                                  with yerrorbars linestyle 2 

fig/sample8.1a

標準のままでEPSを作ると,図に比べて文字が小さくなりすぎてしまいま
す. set term のオプションで大きめのフォントを指定するか,この
例の様に set size で全体を小さくしてしまいます.フォントの大き
さは変わらないので,相対的に文字が大きくなります.

誤差棒付きの記号を描く場合,gnuplotのPostScriptドライバは,線種を1以
外にすると破線や点線で誤差棒を描いてしまいます.従って,実線で種々
の記号を描くには,linestyleを使い,lt(線種)には1
番(実線)を指定した上でpt(記号)の番号を変えます.


TeX(LaTeX2e)に図を貼り込むには,graphicsパッケージを使います.図を任
意の位置に挿入するには,includegraphics{ EPS file
}
を使います.EPS fileの所にEPSのファイル名を指定し
ます.挿入時に,resizebox{X size}{Y size}
使って図全体を拡大縮小することができます.図の縦横の比率を変えずに
リサイズするには,X,Y sizeのどちらかに!を指定します.次の例は,
figure環境に図を入れてキャプションを付けた場合です.図の横幅を120mm
にしています.

 documentclass{article} usepackage{graphics} begin{document} begin{figure} begin{center} resizebox{120mm}{!}{includegraphics{test.eps}} caption{This is a sample figure.} label{test} end{center} end{figure} end{document} 
fig/sample8.1b
up

複数の図をまとめて一つにしたい.

複数の図をまとめるには,gnuplot の multiplotを使う方法や複数のEPS
を作っておいてそれらを再配置する方法等が考えられますが,EPSをたくさん
作っておいて,LaTeXのtabular環境で整列させる方法が簡単でしょう.

2行2列の計 4枚の図を配置する場合を考えましょう.Y軸のラベルは,
4枚の内の左側にある図だけに付け,X軸のラベルは下側にある図だけに
付けるとします.また,4枚全体に対して一つのキャプションを付けます.

まず,4つそれぞれの図のEPSファイルを作っておきます.このとき,
X軸とY軸がかならず揃うようにするため,
図の大きさが一定になるようにします.
例として,y=sin(x), cos(x), sin(2x), cos(2x)のグラフを描いてみます.

 gnuplot> set term postscript eps enhanced gnuplot> set lmargin 5 gnuplot> set bmargin 3 gnuplot> set rmargin 2 gnuplot> set tmargin 2 gnuplot> set size 0.5,0.5 gnuplot> set xrange [0:2*pi] gnuplot> set yrange [-1:1]  gnuplot> set output "test1.eps" gnuplot> set xlabel "" gnuplot> set ylabel "sin x" gnuplot> plot sin(x) notitle  gnuplot> set output "test2.eps" gnuplot> set xlabel "" gnuplot> set ylabel "" gnuplot> plot sin(2*x) notitle  gnuplot> set output "test3.eps" gnuplot> set xlabel "X [nodim.]" gnuplot> set ylabel "cos x" gnuplot> plot cos(x) notitle  gnuplot> set output "test4.eps" gnuplot> set xlabel "X [nodim.]" gnuplot> set ylabel "" gnuplot> plot cos(2*x) notitle 

これらtabular環境に取り込んで,整列させます.

 documentclass{article} usepackage{graphics} begin{document} begin{figure} begin{center} begin{tabular}{cc} resizebox{60mm}{!}{includegraphics{test1.eps}} & resizebox{60mm}{!}{includegraphics{test2.eps}} \ resizebox{60mm}{!}{includegraphics{test3.eps}} & resizebox{60mm}{!}{includegraphics{test4.eps}} \ end{tabular} caption{This is sample figures.} label{test4} end{center} end{figure} end{document} 
fig/sample8.2b

figure環境にせず,単純にtabularで配置した後,そのページだけをdvipsで
PostScriptにしてしまえば,一つのPSにまとめることも可能です.これには,
dvipsのコマンドラインオプション -pp を使います.また, -E
オプションを使って,グラフのある部分だけを切り取ってEPSにすること
もできます.この方法は案外便利で,任意の数のグラフを,TeXを使って好き
なように配置し,それらをひとまとめにしたEPSを作れます.詳しくはdvipsの
マニュアルを参照してください.

この他にも,tgifを使って,複数のプロットを一つにまとめる方法もあり
ます.また,EPSを読み込めるDraw系のソフトを使って図を並べる手もありま
す.

up