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