Window版のgnuplotで日本語ラベルを書いてEPSで保存する

Pocket

仕事でグラフを作ることになり,この歳になって一からgnuplotを勉強しています.昔はgnuplotというと敷居が高い印象があり,手が出せませんでした.そういえば大昔Macを使っていた時はDeltagraphを使ってた覚えが.
今回は,Windows環境でかなり便利になったらしいgnuplotでグラフを作成してEPSで保存し,最終的にLaTeXに持ち込むということを目標としました.

Ads

gnuplotのインストールと初期設定

gnuplot(ニュープロットと読むらしい)は2次元および3次元のグラフを作成するソフトウェアであり,インターネット上で無料で配布されているフリーウェアです.現在ではWindows版やMacOS X版などがあります.

gnuplotのWindows版は現在バージョン5.0.3が最新(2016/06時点)のようです.gnuplotのダウンロードはgnuplotのページからリンクを辿ってsouceforgeからダウンロードできます.

今回は64bit版のインストーラ付きをダウンロードしました.ファイル名は「gp503-win64-mingw.exe」でした.

ファイルをダブルクリックするとインストールのオプションで日本語対応のチェックがあるので入れておきます.

gnuplot_install1

次に追加タスクの選択です.そのままでもいいのですが今回は「実行ファイルのディレクトリをPATH環境変数に追加する」にチェックを入れておきます.こうすることでコマンドプロンプトからの起動が楽になります.

gnuplot_install2

インストールが終了すると,c:\program files\gnuplot\bin\wgnuplot.exeをダブルクリックすればWindows版gnuplotが起動します.x86版をインストールした場合にはc:\program files(x86)…にインストールされます.

gnuplotを起動すると次のような画面になります.

gnuplot_boot1

まず最初にすることは言語設定.「画面上で右クリック→choose fontを選択して日本語を選択します」と書いてあるものが多いのですが,日本語対応にチェックを入れたせいかすでにMSゴシックになっていました.

gnuplot_choosefont

gnuplot_choosefont2

最後に右クリックで「Update c:\users\xxxx\AppData\Roaming\wgnuplot.ini」を選択して保存と書いてあるものも多いのですが,これもしなくて良さそう.

これで準備は完了.

gnuplot基礎の基礎(1) グラフのプロット

gnuplotを起動したらコマンドが出てきます.この「gnuplot>」というコマンドをみるとちょっと手ごわそうな気もしますが,わかりやすい操作方法などがweb上でたくさん公開されていますのでぜひともそれらをご一読ください.

ちなみに私はgnuplotのつかいかた(PDF)をダウンロードして印刷したものを手元においています.

web上だと,「gnuplot 使い方」などで検索するとたくさん出てくるのでそれらをご覧ください.

ここでは,センター試験数学II・Bの平成28年度本試験の問題をサンプルとしてグラフを作成していきましょう.まず作るのはy=2^xのグラフです.

center_math_IIB_h28

まず最初にy=2^{x}のグラフをgnuplotを使って作成します.「>gnuplot」の後に「plot 2**x」と入力してエンターキーを押すとグラフが作成されます.べき乗は「^」でなく「**」になっています.これに最初ハマりました.

2^x

次にy= \frac{1}{2} ^{x}を求めるには,「plot (1/2)**x」ではなく,「plot (1/2.)**x」とピリオドを加える必要があります.これは切り捨てするためとありました.

plot_1div2_1

1div2^x

gnuplotにはたくさんの関数が用意されています.必要な関数を調べて入力してみてください.

gnuplot基礎の基礎(2) グラフを重ねる

これらの2つの関数式を同じグラフにするためには「plot 2**x,(1/2.)**x」とコンマで並べます.

graph_overray

するとこんなグラフが.

graph_gousei1

このグラフはx=0に対称なのがわかりました.

gnuplot基礎の基礎(3) 軸の設定

x軸やy軸の目盛間隔を変更するには「set xtics n」や「set ytics n」を使います.

作成したグラフはy軸方向の値が大きいので100ごと,x軸の目盛は1ごとにしてグラフを作成するとこんな感じになります.

xtics_ytics

xtics_ytics_graph1

次に軸の表示範囲(値域)です.これは「set xrange[xx:yy]」や「set yrange[xx:yy]」で変更できます.

set_xrange_yrange1

今回はxの値域を-5から5,yの値域を0から20にしました.先ほどのyticsは大きすぎるので5に変更して再描画するとこんな感じになります.

set_xrange_yrange_graph

gnuplot基礎の基礎(4) グリッドと凡例

グラフにグリッドをつけるには「set grid」,凡例(Legend)は「set key」を使います.「set key」コマンドには「left,right,top,bottom,outside,below」という引数があるので,凡例をグラフの右外に表示したい場合には「set key outside」,凡例を表示しない場合には「unset key」を使用します.

grid_legend

grid_legend_graph

また,「set key xxx」のあとにboxオプションがあり,どんな線種でどんなスタイルで凡例を囲むかを指定できます.

「set key outside box lt 1 lw 3 」はlt(linetype)が1(紫)lw(linewidth)が3ptになります.ちなみにlt 2で緑,3で水色,4でブラウン,5は黄色のように見えます.ドキュメントを見ると1は赤で2は緑のようです.

legend_box1

legend_box2

gnuplot基礎の基礎(5) ラベルとタイトル

x軸のラベルは「set xlabel ‘xxxx’」,y軸のラベルは「set ylabel ‘yyyy’」で設定できます.また,タイトルも「set title ‘title’」でつけられます.「’」でも「”」でもどちらでもいけるようです.

オプションで最後にフォントサイズを指定できるので,例えばx軸のラベルにx,y軸のラベルにy,タイトルに「2^xと(1/2)^x」としてフォントにGothicBBB-Medium-EUC-Hを指定してサイズを24ポイントにします.フォントはゴシック体ならこれにしておくほうがいいようです.明朝体であればRyumin-Light-EUC-Hを指定しておきます.

graph_label_and_title1

gnuplotに入力するコマンドは「set title ‘2^xと(1/2)^xのグラフ’ font “GothicBBB-Medium-EUC-H,24″」です.フォント指定も「’」でも「”」でもどちらでもいけるようです..

結果としてこのように表示されました.べき乗はちゃんと表示されているようです.

graph_label_and_title2

gnuplotのpltファイルからEPSを作成する

gnuplotではコマンドで1つずつ入力するのは面倒なのであらかじめ「ファイル名.plt」というpltファイルを作成しておくと便利です.

後々のことがあるので,エディタを使って面倒の少ないEUCファイルで保存しておきましょう.

今までに作ってきたものをpltファイルに書くのですが,そのままでは文字化けしてしまうので「set terminal」コマンドでpostscript epsを指定してEPSを作成するようにします.「set terminal」コマンドではフォントの指定もできるので,「set terminal postscript eps enhanced “GothicBBB-Medium-EUC-H” 20」とすることができます.

これはEPSを作成し,フォントはゴシック体でサイズ20ポイントを明示しています.

また,「set terminal」コマンドの後に「set output」コマンドを書くことで保存されるファイルを指定できます.今回は「set output ‘c:\users/xxxx/test.eps’」としておきます.

plotコマンドの後に「set output」と1行追加して保存しておきます.

今回のpltファイルはこう書きました.

plt_sample

こうして出来たpltファイルをgnuplotの画面にドラッグすると完成です.指定した場所にepsファイルができていることを確認しましょう.

epsファイルはghostscriptがインストールされていればgsview(gsview32.exe)やsumatraPDFで閲覧できます.

こちらはgsviewで見たもの.

eps_gsview

こちらはsumatraPDFで見たもの.

eps_sumatraPDF

今まではgsviewで閲覧していたのですが,sumatraPDFがeps表示できることを知って常用しています.

今回悩んだのはCorelのCorelDRAW X6 X7などではEPSを開く際に文字化けしてしまい,変換に失敗したと思ったことにありました.

CorelDRAW X7でテキストとして開いたものがこちら.

eps_corelDRAW

見事に文字化けしてます.Illustratorを持っている人に見てもらったら,CS2/CS6では文字が置換されるけど開くことができるとのこと.ただし,文字はアウトライン化されており編集はできないんだそうです.

こうして完成したepsはLaTeXでは\includegraphicsコマンドで使うことができます.

DVIOUTでの表示例.

eps_dviout

PDFに変換後にsumatraPDFで表示した例.

gnuplot_eps_pdf_sumatrapdf

おまけ

センター試験の問題の他の関数もグラフに書いてみました.

log_{2} xのグラフ(底が2)は,底の変換公式より「plot log10(x)/log10(2)」で求められます.なので,y=2^xのグラフと並べるためには,「plot log10(x)/log10(2),2**x」と入力します.

比較のためにy=xのグラフも入れたいので「plot log10(x)/log10(2),2**x,x」と書いて作ったのが次の図です.

2x_log2x_1

gnuplotはコマンドで「help コマンド」を入れると詳細なヘルプが出てくるのでそれを見ても勉強になります.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です