グラフを画像として保存する

28.6. グラフを画像として保存する

gnuplotでは、出力を画面に表示するだけでなくファイルに書き出すことができ、作成したグラフを他の文書に貼り付けたりすることができます。ここでは、その方法を説明します。

gnuplotの起動時のメッセージに

Terminal type set to ‘aqua’

という行があったはずです。「aqua」というのは Mac OS 向けの画面表示インターフェイスです。この「Terminal type」を他のタイプに変えることで、画像ファイルに出力することができます。それを行うには、set term コマンドを使います。

set term (タイプ)

なお上で (タイプ) を指定しなければ、指定できる Terminal type の一覧が表示されます。

このページの残りでは、いくつかの形式の画像ファイルに出力する方法を説明していきます。LaTeX 文書に挿入する方法は 27.12. グラフィックス を参照してください。なお、標準設定だと、軸や凡例のフォントが図に対して小さいように感じられます。実際に使う際には size 指定などをうまく使い、調節して下さい。

画像ファイルへの出力が終わったら、

set term aqua

を実行することで、再びgnuplot 起動時のようにグラフが画面上に表示されるようになります。

gnuplot を起動したまま、画像ファイルを別のソフトウェアで読み込んだりする前には、必ず set term aqua を行うか、別の(ダミーの)保存ファイル名を set output で指定するようにして下さい。そうしないと、画像ファイルの出力が不完全になることがあります。

PNG 形式:png, pngcairo #

PNG 形式の画像ファイルを作成したいのならば、Terminal type に png を指定し、次に set output で出力したいファイルの名前を指定します。

set term png size 480,360

Could not find/open font when opening font “arial”, using internal non-scalable font Options are ’nocrop medium size 480,360 ‘set output “gnuplot-png.png"

ここで、size 480,360 は画像のサイズをピクセル単位で 480×360 にするという指定です。標準の画像サイズは 640×480 です。

その後、画面に出力するのと同じように

set xrange [-1:1]

plot x**2 title “x^2”, sin(x), cos(x)

などとプロットを行うことで、内容が画面の代わりに set output で指定したファイル(この場合は gnuplot-png.png)に保存されることになります。下に、以上の入力から得られた gnuplot-png.png を載せておきます。

pngcairo #

教育用計算機システムの gnuplot など、比較的最近のものでは Terminal type に pngcairo を指定することができます。png を使うよりかは、こちらがお勧めです。

set term pngcairo enhanced size 480,360

Terminal type set to ‘pngcairo’ Options are ’ background “#ffffff” enhanced fontscale 1.0 size 480, 360 ‘set output “gnuplot-pngcairo.png"

これは、cairo と呼ばれるライブラリを用いて画像を書くもので、次のような特徴があります。

  • 線やフォントの縁がなめらかになります。
  • 上のように、set term で enhanced 指定をしておくと、上付き文字や下付き文字も表示させることができます(環境が整っていれば Terminal type が png であってもできるはずなのですが)。

Terminal type が png のときと同じように、

set xrange [-1:1]

plot x**2 title “x^2”, sin(x), cos(x)

で出力した画像を以下に載せます。上の terminal type が png であったときの画像と比べてみて下さい。

印刷するときはカラーでできるとは限りませんから、白黒で出力したいこともあるでしょう。また、フォントが気に入らないこともあるでしょう。そのような場合、set term の行にオプションをつけます。

set term pngcairo monochrome enhanced font “Times” fontscale 1.2 size 480,360

Terminal type set to ‘pngcairo’ Options are ’ background “#ffffff” enhanced font “Times” fontscale 1.2 monochrome size 480, 360 ‘set output “gnuplot-pngcairo2.png"

  • monochrome は、白黒で出力することを指定します。
  • フォントは、font “Times” などと指定します。
  • 他の Terminal type でも使えますが、fontscale 1.2 で、フォントサイズが標準の 1.2 倍になります。

これによる出力結果は下のようになります。

PDF 形式:pdfcairo #

cairo を使って PDF 形式のファイルを作成するときに使うのが pdfcairo です。LaTeX 文書に挿入する時はこの形式を用いるのが一番楽でしょう。

set term pdfcairo enhanced size 4in, 3in

Terminal type set to ‘pdfcairo’ Options are ’ transparent enhanced fontscale 0.5 size 4.00in, 3.00in ‘set output “gnuplot-pdf.pdf"

以下の点を除けば、ほぼ pngcairo と使い勝手は同じです。出力例 gnuplot-pdf.pdf を載せておきます。

  • 画像サイズは(ピクセル単位でなく)「size 5cm,3in」 などと実際の長さで指定します。標準サイズは 5 in × 3 in です。
  • 複数回 plot を行うと、できた PDF ファイルは複数ページの物になります。

EPS 形式:postscript, epscairo 27.12. グラフィックス にも書かれているように、LaTeX の文書中に画像を張り込むとき、EPS (Encapsulated Postscript) 形式で画像を作っておくのが伝統的でした。なので、このページでも EPS 形式で画像を出力する方法を説明します。 #

EPS 形式の画像を出力するには、下のように Terminal type に postscript を指定し、eps オプションをつけます。

set term postscript eps enhanced size 10cm,5cm

Terminal type set to ‘postscript’ Options are ’eps enhanced defaultplex
leveldefault monochrome colortext
dashed dashlength 1.0 linewidth 1.0 butt noclip
nobackground
palfuncparam 2000,0.003
size 10.00cm, 5.00cm “Helvetica” 14 fontscale 1.0 ‘set output “gnuplot-ps.eps"

  • 上のように、pngcairo のところで説明した enhanced 指定も使うことができます。
  • 標準は白黒 (monochrome) です。カラーで出力したい場合は、color 指定を加えます。
  • pdfcairo のときのように、画像サイズは(ピクセル単位でなく)5cm などと実際の長さで指定します。標準サイズは 5 in × 3 in です。

あとは、画面上に表示するときと同じようにグラフのオプションを設定したり、plot で実際にグラフを描画したりします。

生成した EPS ファイルのスクリーンショットを下に載せておきます(灰色部分は画像の外です)。

epscairo #

pngcairo, pdfcairo と同じように、epscairo も用いることができます。使い方は pngcairo, pdfcairo とほとんど同じで、こちらは標準でカラーになります。

set term epscairo enhanced size 4in, 3in

Terminal type set to ’epscairo’ Options are ’ transparent enhanced fontscale 0.5 size 4.00in, 3.00in ‘set output “gnuplot-epscairo.eps"

例によって、epscairo で生成した EPS ファイルのスクリーンショットを貼り付けておきます。灰色部分は画像の外です。

LaTeX への貼り込み用:epslatex #

epslatex を使うと、画像部分を EPS 形式で、凡例や目盛などのテキスト部分を LaTeX の記法で書くことができます。標準では白黒になり、set output には TeX ソースの名前を指定します。LaTeX の使い方は 27. LaTeX を参照して下さい。

set term epslatex size 4in,3in

Terminal type set to ’epslatex’ Options are ’ leveldefault monochrome blacktext
dashed dashlength 1.0 linewidth 1.0 butt noclip
nobackground
palfuncparam 2000,0.003
noheader size 4.00in, 3.00in "” 11 fontscale 1.0 ‘set output “gnuplot-epsl.tex"

epslatex を使う場合、凡例の表示などに LaTeX の記法をそのまま書くことができます。下に例を示しますが、その前に注意点を述べておきます。

  • 2 つのファイルが出力されます。上の例では、図版部分の gnuplot-epsl.eps と、テキスト部分の LaTeX ソース gnuplot-epsl.tex です。
  • テキスト部分はほぼそのまま LaTeX ソースに出力されますが、コマンドの開始を表す \(バックスラッシュ)は \ と2つ重ねないといけません。
  • 上に関連して、特に目盛で負の数が出力されるときは、下の例の 2, 3 行目のように目盛が数式として表示されるようにします。LaTeX は地の文では – をハイフンとして認識するためです( 27.11. 欧文の書き方 参照)。

set xrange [-1:1]

set format x “$%g$“

set format y “$%g$“

plot x**2 title “$x^2$”, sin(x) title “$\sin x$”, x title “test"

こうして作った図を LaTeX 文書に挿入するには、次のように \input コマンドを使います。

\documentclass{jsarticle}
\usepackage[dvipdfmx]{color,graphicx} % [dvipdfmx] の部分は使うソフトウェアに合わせること
\begin{document}
\begin{figure}
\centering
\input{gnuplot-epsl.tex} % \includegraphics はここでは使いません
\caption{epslatexで図を入れた例}
\end{figure}
\end{document}

3 次元グラフのスタイル設定 グラフを画像として保存する グラフのフィッティング