はじめに
LaTex を使うにあたり、eps ファイルを用意することがしばしばあるかと思います。私の研究室では Gnuplot なるソフトを用いて eps ファイルを作成します。
ここでは、研究室の後輩を読者と想定し、私なりの Tips を備忘録として残しておきます。Gnuplot とはなにか、文法とはなにかといったことは面倒くさいので偉大な先輩方が読みやすく他記事にまとめてくださっていたので、割愛します。
gpファイルのススメ
他の Qiita の記事にてよく見かける方法が、
- Gnuplot を起動
- ファイルを作りたいディレクトリにチェンジディレクトリ
- set xlabel や plot コマンドをターミナルに打ち込み、グラフを作成
といった流れです。この方法、間違ってはいないのですが、個人的にはかなり時間食うのであまり好きではありません。
特に、もしあなたが私の研究室の後輩なら、先輩のデータからpltファイルをまず作成し、それから a.eps をつくる script.gp を発見したかもしれません。もし今そのgpファイルを使っているなら、断言しますが、遅いので直ちにやめてください。
ではどうすればいいのか?僕の回答は以下です。
- 予めチェンジディレクトリやplotコマンドを打ち込んだgpファイルを用意する
- Gnuplot を起動
- 1にて用意したgpファイルをターミナルにて読み込ませる。(gp ファイルをドラッグアンドロドップでOK)
以上です。要するに、逐次的にターミナルにコマンドを打ち込むのではなく、前もってコマンドを書ききったファイルを読み込ませるんです。
参考までに、私の普段用意している gp ファイルを以下に紹介します。
色々と使えるように、コメントアウト(# 以下の部分)が多いですが、ご容赦を。(あと、色を付けていますが Gnuplot にドンピシャのシンタックスハイライトではないです…スミマセン)
reset
cd 'C:\Users\...\Desktop' # ... の部分は自分のユーザー名
set terminal postscript eps enhanced color "TimesNewRoman" 28
set output "result.eps"
#set xtics 0,900,2700 # x軸の最小目盛,間隔,最大値
#set ytics 0,250,1000 # y軸の最小目盛,間隔,最大値
set key top right # 凡例の場所 top(bottom) raght(left) / 図の右外:outside 図の下外:below
set xlabel "{ Elapsed time, {/TimesNewRoman-Italic t} (sec)}" # x軸のタイトル
set ylabel "Temperature, {/TimesNewRoman T}({/TimesNewRoman-Italic t})" # y軸のタイトル
#set xrange [0:2700] # xの最小値 - 最大値
#set yrange [0:120] # yの最小値 - 最大値
#set arrow from 2,0.4 to 2,1.6 nohead lt 0 lw 7 # y軸と平行に点線を引く
#set ○margin 10 # ○= t:上 / b:下 / l:左 / r:右 余白を10
f(x) = x
#[8,28] f(x) lc 'green' lw 5 title "1:1 line"
# ↓ Point でプロット
plot "example1.txt" using 1:2 with points lc "red" pt 5 ps 1.5 title "ex1"\
#\
,"example2.txt" using 1:2 with points lc "blue" pt 64 ps 1.5 notitle\
# ↓ Line でプロット
#plot "example3.txt" using 1:2 with lines lc "black" lw 5 title "ex3"
スクリプトの解説
reset
cd 'C:\Users\...\Desktop' # ... の部分は自分のユーザー名
set terminal postscript eps enhanced color "TimesNewRoman" 28
set output "result.eps"
1行目でリセット。おまじない。
2行目でデスクトップへチェンジディレクトリ。必ずデスクトップにファイルが吐かれるようになります。デスクトップに gp ファイルとデータファイル(テキストファイル)を用意する必要がありますが、ちまちまチェンジディレクトリする必要がなくなりました。
3行目はeps ファイルを出力するためのおまじない。
4行目は出力ファイル名。
#set xtics 0,900,2700 # x軸の最小目盛,間隔,最大値
#set ytics 0,250,1000 # y軸の最小目盛,間隔,最大値
set key top right # 凡例の場所 top(bottom) raght(left) / 図の右外:outside 図の下外:below
set xlabel "{ Elapsed time, {/TimesNewRoman-Italic t} (sec)}" # x軸のタイトル
set ylabel "Temperature, {/TimesNewRoman T}({/TimesNewRoman-Italic t})" # y軸のタイトル
#set xrange [0:2700] # xの最小値 - 最大値
#set yrange [0:120] # yの最小値 - 最大値
#set arrow from 2,0.4 to 2,1.6 nohead lt 0 lw 7 # y軸と平行に点線を引く
#set ○margin 10 # ○= t:上 / b:下 / l:左 / r:右 余白を10
ここは、フツーのコマンド。使うときのみ、コメントを外してあげます。
f(x) = x
#[8,28] f(x) lc 'green' lw 5 title "1:1 line"
これは、私が回帰分析をしたときに使う部分。多くの人にとってはいらないと思います。
# ↓ Point でプロット
plot "example1.txt" using 1:2 with points lc "red" pt 5 ps 1.5 title "ex1"\
#\
,"example2.txt" using 1:2 with points lc "blue" pt 64 ps 1.5 notitle\
# ↓ Line でプロット
#plot "example3.txt" using 1:2 with lines lc "black" lw 5 title "ex3"
これは実際のデータ(example1.txt)をプロットする条件を記載したもの。点でプロットするか、線でプロットするかで使い分けてください。なお、**行末の \ は改行を表しています。見栄えのために改行しているだけです。**分かりにくいですが、4 行目の example2.txt のところはコメントアウトされています。
最後に(余談)
以上、gp ファイルを用いて Gnuplot でグラフを作るやり方を紹介しました。ただ、ここまで紹介しておいてなんですが、Gnuplot には個人的には凡例の位置の微調整が難しいことや、凡例の種類をいちいち確認するのがだるいといった不満もあります。
なお、地味に便利な tips として、q と入力し、Enter するだけでgnuplot を閉じれます。塵も積もればなんとやら。ぜひ使っていきたいところです。