Navigation


RSS



LaTeX文書にグラフを挿入したい

LaTeX文書に挿入する図表として、通常の図回路図をOpenOffice.org Drawを用いて作る方法を紹介しました。ここでは「グラフ」の作り方を紹介します。
こちらはOpenOffice.orgとは別のフリーウェアに頼ることにします。gnuplotと呼ばれるソフトウェアです。

必要なソフトウェア

  • gnuplot

動作確認環境: Windows Vista, gnuplot Ver 4.2.6

gnuplotのインストール

ダウンロードページから「All Files」→「gnuplot」→「4.2.6」→「gp426win32.zip」をダウンロードします(執筆時点の最新バージョン4.2.6の場合。バージョン番号に「rc1」などと付いていない安定版のうち最新のものを使用することを推奨します)。
ダウンロードしたZIPファイルを適当なフォルダに解凍してください。

作成手順

以下、2次元グラフの場合について説明します。「とりあえず使える程度」の説明しかしません。詳しくはマニュアルや他のサイトに譲ります。

実験データなどの点を打つ場合

テ キストファイルに生データを入力しておきます。1行が1組のデータを表し、各データを半角空白で区切ります。とりあえず使ってみる分には、このファイルを gnuplotを解凍したフォルダにある「bin」フォルダの中に「data.txt」という名前で保存しておきます(他の名前で保存する場合は、以下の コマンドを適宜変更します)。ファイルの内容は、例えば以下のようになります。

277.98 2.26
243.51 1.92
222.21 1.80
208.84 1.68
197.29 1.62
179.56 1.50
159.76 1.36
139.88 1.21
119.98 1.05
98.56 0.85

次に、wgnuplot.exeを起動します。フォントが読みにくくて仕方がないと思いますので、白い背景に文字が表示されている場所を右クリックし、「Choose Font」をクリックし、「MS ゴシック」を選択すれば文字が読めるようになります。

gnuplotの画面

画面に gnuplot > と表示されてカーソルが点滅していますが、これに続けて、次のコマンドを順番に入力していきます。

set term postscript eps monochrome "Helvetica-Bold" 24
unset key
set border 3 lw 2
set xtics nomirror
set ytics nomirror
set xrange [50:300]
set yrange [0.5:2.5]
set output 'output.eps'
plot 'data.txt' using 1:2 with points pt 7 ps 1.5

これで、output.epsにグラフが保存されます。通常の図と同じ方法で、LaTeX文書にグラフを挿入することができます。

xrange, yrangeの後に続けるのは、それぞれグラフ上のx座標, y座標の範囲です。上の例なら、50≦x≦300, 0.5≦y≦2.5 の範囲に設定しています。この行を省略すれば、x, yの範囲は自動設定となります(ちゃんと指定することを推奨します)。

set border の行は、座標軸に関する設定となります。border の直後の数字は、座標軸を左と下に描くことを表し、lw の直後の数字が座標軸の太さを表します。

最 後の行の using 1:2 の部分は、テキストファイルのどのデータをx座標、y座標として用いるかを示します。今のデータであれば、各行に2つの値を入力していますが、そのうち1 つ目をx座標、2つ目をy座標として用いることになります。using 2:1 とすれば、x座標とy座標が逆になるわけです。

点の種類を変えたい場合は、pt 7 の部分の数字を変えます。×印なら2、■印は5、●印は7などとなっています(詳しくは検索してください)。
点の大きさを変える場合は、最後の行の ps 1.5 の部分の数字を変えます。数字が大きいほど点も大きくなります。

なお、以上のコマンドで出力されるグラフは以下のようになります。

グラフの一例

関数のグラフを表示する場合

以下のようなコマンドを入力すると、関数 y=2x+3 のグラフが 2≦x≦5 の範囲で出力されます。

set term postscript eps monochrome "Helvetica-Bold" 24
unset key
set border 3 lw 2
set xtics nomirror
set ytics nomirror
set xrange [2:5]
set yrange [5:15]
set output 'output.eps'
plot 2*x+3 with lines lt 1 lw 3

描画したい関数は、plot の直後に指定します。べき乗(x2なら x**2 と入力する)、指数関数 exp(x)、対数関数 log(x)、三角関数 sin(x) cos(x) tan(x) asin(x) acos(x) atan(x) などを組み合わせて自由に指定できます。

線のスタイルは lt 1 の部分の数字を、線の太さは lw 3 の部分の数字をそれぞれ変更すれば変えられます。

上のコマンドでは、こんなグラフが出力されます。

グラフの一例

1つのグラフに点をプロットし、しかも関数のグラフも重ねて表示する場合

set term postscript eps monochrome "Helvetica-Bold" 24
unset key
set border 3 lw 2
set xtics nomirror
set ytics nomirror
set xrange [50:300]
set yrange [0.5:2.5]
set output 'output.eps'
plot 0.007500*x+0.139407 with lines lt 1 lw 3, \
     'data.txt' using 1:2 with points pt 7 pointsize 1.5

グラフの一例

ご覧の通り、関数のグラフとプロットした点が重ねて表示されています(ちなみに、この関数はプロットした点の回帰直線を最小2乗法で求めたものです)。plot の部分で、グラフを描画するときのコマンドと点を描画するときのコマンドを同時に指定しているだけです。

この方法を使えば、複数のグラフを同時に描画することも可能です。

set term postscript eps monochrome "Helvetica-Bold" 24
unset key
set border 3 lw 2
set xtics nomirror
set ytics nomirror
set xrange [0:5]
set yrange [-1:5]
set output 'output.eps'
plot log(x)+1 with lines lt 1 lw 3, \
     x with lines lt 3 lw 3

上のようにすれば、y=x のグラフと y=logx+1 のグラフが同時に表示されます。

グラフの一例