gnuplot での eps 出力の Tips (2016年版)

論文やレポート用の図の作成に gnuplot を使い、eps 形式で出力する人のためのTips。2016年版。

eps出力

開始

gnuplot スクリプトで、eps出力をする場合、私はまず次のように指定しています。

set term postscript enhanced eps color font ",24" size 5., 7.1
set out "sample.eps"

postscriptファイルに書き出すときの最小限の指定は、

set term postscript

です。

  • これに enhanced をつけると、eps形式になります。下付き、上付きの添字、ギリシャ文字などを使うことができるようになります。
  • eps を指定すると、経験上適切なboundboxが指定されます。eps表示ソフトで表示するときや、latexに貼り付けるときに問題が起きにくいです。
  • color を付けると、色付きになります。最近は電子ジャーナルが一般的になり、わざわざモノクロで図を作成する必要も少なくなりました。ただ、モノクロプリンタで印刷して読む人もいるため、モノクロ印刷した時に見分けがつくような色指定になるように気を使うと良いです。
  • font “<font名>, <サイズ>” でフォントの指定をします。font名を空白にすると、サイズだけ指定します。私はここではfont名は指定しません。斜体や太字などを使いたいときのみフォントを指定するようにしています。ここで指定するフォントサイズは、この画像全体でのデフォルト値になります。標準の画像サイズのときには、24から28にしています。あとで指定する軸ラベルのサイズは、それプラス2-4にしています。
  • size x, y で画像のサイズを指定します。単位をつけないときは、inchになります。横長の画像で良い場合は、指定していません。縦長の画像にしたいときだけ、だいたい 1:√2 の割合になるように、サイズ指定しています。プロット領域(グラフ領域)の指定は、これとはまた別に、set sizeコマンドがあります。
  • set outで出力ファイル名を指定します。

終了

plotコマンドでグラフを出力し終えたときには、

set out

をして、バッファのフラッシュをします。

なお、同時にpdfファイルも欲しいというときには、その次に次のコマンドを入れておきます。ps2pdfコマンドがインストールされていることが必要です。

!ps2pdf -dEPSCrop example.eps
  • !でターミナルにコマンドを送ります。
  • ps2pdf を実行します。
  • -dEPSCrop のオプションを指定すると、epsのサイズを適切に認識してくれます。

軸の指定

次に x軸、y軸関連の指定をします。例えば次の通り。

set xlabel "length (m)" font ",28" offset 0, 3
set ylabel "Energy (meV)" font ",28" offset 3, 0 
set xrange [0:10]
set yrange [0:200]
set xtics 1
set mxtics 5
set ytics 20
set mytics 2
  • set xlabel, ylabelで軸名の指定をします。
  • fontサイズを指定します。
  • たまに、軸名の位置をずらしたいというときがあります。そういうときのみ、offset x, yを指定しています。私は、単位指定無しで、3-10くらいを入力して、様子をみながら決めています。なお、offset screen 0.3, 0などとすれば、スクリーンサイズ * 0.3 だけxにずらす、という意味になります。
  • set xrange [begin:end]で、x軸の範囲を指定します。
  • xtics で、目盛りのステップを指定します。この指定だと、0, 1, 2, …, 10という目盛りが振られます。なお、set xtics begin, end, stepという指定もでき、set xtics 4, 9.9, 1 などとすると、4, 5, 6, 7, 8, 9 に目盛りが振られます。この目盛りは数値表示が付きます。
  • mxtics は、サブの目盛りです。こちらは数値表示が付きません。set mxtics 5にすると、0 から 1の間に5つのサブ目盛りが振られます。よく使うのは、2, 4, 5ですね。3とか6とかで目盛りを分けたいことは少ないでしょう。

記号

エイチバー(hbar, ħ)

記号が用意されていないので、自分で似たような記号を作る必要があります。

例えば次のようにします。

{/Helvetica-Oblique @^-h}
  • フォントを斜体指定します。たいてい数式の中なので、斜体が正式。
  • @で、次の文字を書き出した後はカーソルを移動しない指定をします。
  • ^- でマイナスの上付き文字を書きます。
  • hを書きます。

次の書き方のほうが、バーの位置がより好ましい位置に来ますが、あまりこだわりすぎずに済ますのがよいと思います。

{/Helvetica-Oblique @{\305}h}

他の例としては次のものがあります。フォントサイズを変更してバーを描く方法もありますが、ベースとなるフォントサイズが変わるたびに調整しなくてはいけなくなりますので、フォントサイズはそのままがおすすめです。

hbar

 

これを書くのに用いたgnuplotスクリプトはこちら。

reset
set term postscript enhanced font ",28"
set out "hbar.eps"

set notics
unset key
set border 0

set label "\{/Helvetica-Oblique @^{/Symbol \276}h}\n\
{/Helvetica-Oblique @^{/Symbol -}h}\n\
{/Helvetica-Oblique @{\305}h}\n\
{/Helvetica-Oblique @^{\261}h}\n\
{/Helvetica-Oblique @^-h}\n\
{/Helvetica-Oblique {/Symbol \140}h}"\
at screen 0.1, 0.9


set label "\\{\/Helvetica-Oblique \\@\\^\\{\/Symbol \\\\276\\}h\\}\n\
\\{\/Helvetica-Oblique \\@\\^\\{\/Symbol -\\}h\\}\n\
\\{\/Helvetica-Oblique \\@\\{\\\\305\\}h\\}\n\
\\{\/Helvetica-Oblique \\@\\^\\{\\\\261\\}h\\}\n\
\\{\/Helvetica-Oblique \\@\\^-h\\}\n\
\\{\/Helvetica-Oblique \\{\/Symbol \\\\140\\}h\\}"\
 at screen 0.2, 0.9

p "-" pt 0
0, 0
e

set out

オングストローム

次のように、set encodingをしてから、{\305}を使います。

set encoding iso_8859_1
set xlabel  "{/Helvetica-Oblique q} ({\305}^{-1})"
  • set encoding。標準のエンコーディングにはオングストロームが入っていないので、エンコード指定をする。
  • すると、{\305}がオングストローム(Å)になる。

gnuploteps-ang

set encodingコマンドは、set terminalをする前に設定します。encodingを元に戻す時には、set encoding defaultと入力します。terminalにつき、一つのencoding指定が有効ですから、オングストロームをする部分だけ、encodingをiso_8859_1にする、ということはできません。そのため、同時に他の記号を使いたい場合には、iso_8859_1の中から文字コードを選ぶことになります。

例えば、オングストローム(Å)とhbar(ħ)を使うときには、次のように、オングストロームは{\305}のままで、hbarは{/Helvetica-Oblique @{/305}h}ではなく、{/Helvetica-Oblique @{/257}h}とします。\xxxの意味については、下の「その他の記号」を御覧ください。

set encoding iso_8859_1
set xlabel  "{/Helvetica-Oblique q} ({\305}^{-1})"
set ylabel  "{/Helvetica-Oblique @{/257}h}{/Symbol-Oblique w} (meV)"

ベクトルを意味する矢印

次のように {Symbol \256} を重ねて書きます。

@^{/Symbol \256}{/Arial-Italic a}

gnuploteps-vector

その他の記号

ギリシャ文字は、{/Symbol a} など、aの部分を対応するアルファベットにすると出てきます。ωは、{/Symbol w}ですね。斜体にする場合は、{/Symbol-Oblique w}です。

gnuploteps-symbol

記号の一覧表は、gnuplotをインストールしたディレクトリにあるps_guide.pdfというファイルです。探すのが面倒な方のために、pngとpdfファイルを貼っておきます。

ps_guide

ps_guide.pdf

頻繁に使うなら印刷してデスクに貼っておくとよいでしょう。

フォント

postscript の互換性からすると、Arialよりも、Helveticaを使用するほうがよいでしょう。Arialは、postscript 1のcore font setでサポートされていませんが、Helveticaの方は、postscript level 1でサポートされており、互換性に優れます。

PostScript_fonts – Wikipedia

どちらもサンセリフ体で、図での使用には問題ないです。なお、セリフというのは、フォントに伸びている髭のことです。セリフ体は、和文フォントでいうと明朝体に相当します。サンセリフ体は、セリフのないフォントで、和文フォントでのゴシック体に相当します。

斜体

/Helvetica-Oblique を使います。

{/Helvetica-Oblique abc}

gnuploteps-oblique

{/Helvetica-Oblique @^-h}{/Symbol-Oblique w} = 100 {/Symbol \261} 10 eV" at graph 0.5, 1.05 center font ",28"

gnuploteps-oblique2

なお、数値と単位の間はスペースを空けます。業界にもよりますが、数値と%の間はスペースを空けません。

太字

/Helvetica-Bold を使います。

gnuploteps-bold

斜体と太字

/Helvetica-BoldOblique を使います。ベクトルを表すときなどに。

set label "{/Helvetica-BoldOblique Q}" at screen 0.5, 0.965 center font ",30"

gnuploteps-boldoblique

元記事: gnuplotのeps出力で、fontをbold italicにする方法など

図のナンバリング

図1(a)などの (a) のラベルを書くときは、大きめのフォントで次のようにスクリーン位置で指定して書くとよいです。

set label "(a)" font ",32" at screen 0.16, 0.965

epsの表示

windows

XnViewがよいでしょう。

元記事: windows 8 で eps を表示するために XnView 2.24をインストールする

macOS

標準のプレビューでも表示できる。しかし、pdfへ変換されてから表示されるので遅いのと、epsを再出力したときに、再描画してくれない。そのため、gv コマンドがおすすめ。-watch オプションで自動で再描画してくれます。

Homebrewユーザなら、gvは次のようにインストールして使用できます。

$ brew search gv
$ brew install homebrew/x11/gv
$ gv -watch tmp.eps

Homebrewは、mac用のパッケージ管理システムの一つです。mac用のパッケージ管理システムには、他にMacPorts, Finkなどがあります。パッケージ管理システムを使用すると、ターミナル上で使用するコマンド類を一元的に管理することができ、アンインストール、依存関係の解決が楽になりますので、まだご利用でない場合はどれか一つを選んで利用されることをお勧めします。Homebrewのインストールは、一つのコマンドを入力するだけで済みます。Homebrew公式

元記事: vim quickrun, gnuplotメモ

linux

evinceがよいです。

元記事: epsビューア

epsサイズの縮小

gnuplotとは関係ないですが、「jpg等をepsに変換したら、数MBになってしまい、論文に添付できる気がしない」となった場合の対応策。Imagemagickというアプリケーションに含まれるconvertコマンドを使います。これもHomebrew, yum, aptなどのパッケージ管理システムでインストールできます。

convert AAA.jpg eps2:BB.eps

こうすると、epsのエイリアス機能を使ってサイズを縮小してくれます。

元記事: jpg2eps

 

 こんな記事も読まれています  

コメント

コメントを残す


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください