最終更新:2017-06-03 (土) 16:17:45 (1244d)

gnuplot

Gnuplot is a portable command-line driven graphing utility for Linux, MS Windows, macOS, and many other platforms.

gnuplot (ニュープロット*1) はグラフ作成ソフト

Download

Windows

macOS

Repository

Changelog

Packages

gnuplot-lua-tikz

gnuplottex

Usage

基本

LaTeX で取り込む事を前提とするため、次の形式にするのがベターだと思われる。

pdfcairo postscript latex epslatex pslatex pstricks eepic tpic mp mf tgif 

ポータビリティを考えると PDF や PostScript 依存ではない出力形式をつかう事も 考えられる。
日本語化のパッチを当てた gnuplot であれば、Ryumin/Gothic-BBB などの二書体がすぐに使える状態にあるかもしれない。
また、再現性を優先させる と Postscript 形式の出力にすることも考えられる。
まとめると

再現性追求
pdfcairo postscript
汎用性追求
eepic tpic
再編集追求
eepic tgif fig mp mf

tpic/eepic に関してはデバイスドライバが tpic special に対応している必要が ある。
dvips とか dvipdfmx などであれば tpic に対応していると 思われるので、それほど困る事もないだろう。

出力形式

出力形式に eepic, pdfcairo, postscript, epslatex, pstricks などがあり、 TeX との 連携も取りやすいです。
私はたまに eepic で出力する時があるのですが、 このときは y 軸の文字が回転(回転はデバイス依存)できないので、 何らかの工夫が必要です。

とりあえず、暫定的に書きますね。
gnuplot でグラフを eepic に書き出し て "gene.tex" を作る。

gnuplot> set xlabel '$x$'
gnuplot> set ylabel '$y=f(x)$'
gnuplot> set title ''
gnuplot> set key left
gnuplot> set output 'aaa.tex'
gnuplot> set grid
gnuplot> set function style linespoints
gnuplot> plot x
gnuplot> set terminal eepic
gnuplot> replot

ここでやらなければならないのは

gnuplot> set terminal eepic

ではなく、

gnuplot> set terminal eepic rotate dashed 

とすること。これで回転が有効になる。

ただし、 rotate オプションをつけると graphicx パッケージの \rotatebox 命令がつかわれるので、プリアンブルので

\usepackage{graphicx}

は必須となる。

あとは適当に aaa.tex に出力されたグラフを

\documentclass[uplatex,dvipdfmx]{jsarticle}
\usepackage{graphicx,epic,eepic,amssymb}
\begin{document}
\begin{figure}[htpb]
  \begin{center}
    \input{aaa}
    \caption{Gnuplot-eepic}
  \end{center}
\end{figure}
\begin{document}

として原稿に埋め込む。

編集ファイルを用意する

例えば hoge.plt などというファイル名で以下のようなスクリプトを 作成しておきます。

set xlabel '$x$'
set ylabel '$y=f(x)$'
set title ''
set key left
set grid
set function style linespoints
set output 'aaa.tex'
set terminal eepic rotated dashed
plot x

これを

gnuplot 'hoge.plt'

とすれば、aaa.tex に eepic 形式で出力される。

set terminal の仕方と必要パッケージなど

set terminal eepic rotate dashed
set output 'hoge.tex'

の場合は

\usepackage{graphicx,epic,eepic,amssymb}

\input{hoge.tex}

set terminal pdfcairo
set output 'hoge.pdf'

の場合は

\usepackage{graphicx}

\includegraphics{hoge.pdf}

set terminal postscript eps
set output 'hoge.eps'

の場合は

\usepackage{graphicx}

\includegraphics{hoge.eps}

set terminal pstricks
set output 'hoge.tex'

の場合は

\usepackage{pstricks}

\input{hoge}

なんだけど、

dvips -o file.ps file.dvi
ps2pdf file.ps file.pdf

とかやるんでしょうね。


set terminal tgif 
set output 'hoge.obj'

とかやるんでしょうね。ただし、eps とかに変換しないとだめなので、

tgif -print -eps hoge.obj

として hoge.obj から hoge.eps を生成します。 別に pdf でも良いんでしょうけど。 それで

\includegraphics{hoge.eps}

とかします。


MetaPost が分かる事が前提条件ですが、

set terminal mp dashed psnfss
set output 'hoge.mp'

としてから、

mptopdf hoge.mp

とでもすれば TeXExec で MetaPost 形式から一発で PDF が変換できるだろう。 ただし、複数の MetaPost の画像が含まれている可能性もあるので、出力 されるファイル名は hoge-0.pdf とかになるはず。 日本語が処理できる MetaPost は TeX Live に収録されている。

普通に

mpost hoge

とかやると hoge.0 が作られるのでこれを

mv hoge.0 hoge.eps 

とかして

\includegraphics{hoge.eps}

とでもしておけば、大丈夫なはず*2


set terminal tpic
set output 'hoge.tpic' 

として

\input{hoge.tpic}

とすれば \special 命令を用いて tpic special を直接記述するので、 デバイスドライバがそれに対応している必要があるでしょう。 個人的な感想として gnuplot 側で tpic を 出力先にしてしまうと、 ちょっと再現性は悪いかなと思います。


*1 How to pronouce gnuplot?
*2 METAFONT の場合は省略、かなり面倒なので