Latex 文書用にグラフを作成する方法は多数存在するが, Gnuplot では比較的簡単に綺麗なグラフを作成できる.Gnuplot で LaTex 用のグラフを作成する際のメモ.

綺麗なグラフができる理由としては次が挙げられる.

  • ビットマップではなくベクター画像が生成されるので拡大してもグラフが荒くならない.
  • 本文と同じフォントを利用できるので統一感が出る.

また,副次的な効果として次の利点がある.

  • フォントサイズが指定できるのでサイズ調整してもフォントが小さくなりすぎることがない.
  • コマンドラインツールなので大量の図を生成したり,自動生成できる.

次のようなグラフを Gnuplot 経由で作成することができる.

Graph-example

グラフ生成方法

Latex用のグラフを作成するには Gnuplot の term オプションを次のように変更すれば良い.

1
2
set term lua tikz
set output "plot.tex"

グラフが LaTeX の形式で plot.tex というファイルに出力される.

LaTeX 文書にこのグラフを追加する際にはプリアンブルに次のスタイルファイルを追加する.

1
2
\usepackage{tikz}
\usepackage{gnuplot-lua-tikz}

そして input コマンドでファイルを読み込めば良い.

1
2
3
4
\begin{figure}[t]
  \centering
  \input{plot}
\end{figure}

サンプルファイル

冒頭のグラフを作成した際に利用した Gnuplot スクリプトと LaTex ファイルを記載する.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
set term lua tikz size 2.6in, 1.8in font '\footnotesize'
set output "plot.tex"
set grid

set xrange [0:10]
set yrange [0:100]

plot \
     x**3 linewidth 3 dashtype 1 title "$x^3$", \
     x**2 linewidth 3 dashtype 2 title "$x^2$", \
     x linewidth 3 dashtype 3 title "$x$",\
     log(x) linewidth 3 dashtype 4 title "$\\log x$"

出力されるのが LaTex ファイルなので $ で数式を入力できる.ただしバックスラッシュをエスケープする必要がある(例えば最終行の \log はエスケープのためバックスラッシュが2個で必要である).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
\documentclass{article}

\usepackage{tikz}
\usepackage{gnuplot-lua-tikz}

\begin{document}

\begin{figure}[t]
  \centering
  \input{plot}
  \caption{Gnuplot Plot Test.}
\end{figure}

This is a sample \LaTeX{} file.

\end{document}

LaTexファイル側で必要なのは usepackage によるスタイルファイルの追加と input により Gnuplot が出力したファイルを読み込むことである.

スタイルファイル gnuplot-lua-tikz について

スタイルファイル gnuplot-lua-tikz と関連するファイルは TeXLive には含まれていない.しかし,Linux などの環境では Gnuplot のインストール時にパッケージマネージャーが良い感じにスタイルファイル gnuplot-lua-tikz とそれに関連するファイルを LaTex が探索するディレクトリにインストールしてくれる.

Windows では,残念ながら,自分でコピーする必要がある.LaTex がどこを探すかは次のコマンドで表示できる.

1
kpsewhich -var-value=TEXMFHOME

通常は C:\Users\<user-name>\texmf であるようだ.ここに C:\Program Files\gnuplot\share\texmf の内容をコピーする.次のコマンドで LaTex システムが正しくスタイルファイルを発見できるか確認できる.

1
kpsewhich gnuplot-lua-tikz.sty

先程コピーした gnuplot-lua-tikz.sty のパスが表示される.

(追記)

もしくは下記のコマンドを実行することでカレントディレクトリに必要なスタイルファイルを生成できる.

1
gnuplot -e 'set term lua tikz createstyle'

(追記おわり)

環境

以下の環境でテストした.

  • Windows 10 64bit
  • Gnuplot 5.0 patchlevel 5
  • Tex Live 2016

最後に

Gnuplotの デモページ には多数のサンプルファイルがあり,ぼんやり眺めているだけでも楽しい.

論文は見た目が8割!