8ttyan’s blog

コンピュータ関係の小ネタ

gnuplotでlatex数式を埋め込んできれいな図を作る方法

gnuplotからtikzとして出力してpdflatexで処理すると高画質なグラフが手に入る。もちろんlatexの美しい数式が使える。

set term tikz createstyle                      #gnuplot用のlatex styleファイルを同じフォルダに出力
set term tikz standalone size 5in,3in   #standalone指定でそのままpdflatexで処理できる
set output "hoge.tex"                          #拡張子はtexにする
set xlabel "$x$"                                   #ドルマークで囲めば数式として出力できる
set ylabel "$\\theta$"                          #バックスラッシュ( \ )はgnuplot上で意味を持つので、エスケープさせるために二つ書く

gnuplot上で動かすならこれで良いが、shellscriptからgnuplotを動かしてtikzに出すとき、バックスラッシュ " \ " を二重でエスケープしないといけない。
例)hoge.sh

#!/bin/bash
gnuplot <<EOF
set term tikz createstyle                    #gnuplot用のlatex styleファイルを同じフォルダに出力
set term tikz standalone size 5in,3in #standalone指定でそのままpdflatexで処理できる
set output "hoge.tex"                        #拡張子はtexにする
set xlabel "$x$"                                 #ドルマークで囲めば数式として出力できる
set ylabel "$\\\\theta$"                    #バックスラッシュ( \ )をshell script上でエスケープさせるには \\ と二つ入力すれば良いが、gnuplot上でも二つ書いてエスケープしないといけないので、"\"を1つ表示させるためには4つ書く必要がある
plot  sin(x) w lp                                #関数をプロット
EOF

いずれにせよ、こうすると一群のスタイルファイル
gnuplot-lua-tikz-common.tex
gnuplot-lua-tikz.sty
gnuplot-lua-tikz.tex
とグラフを記述した
hoge.tex
というファイルが出力されるので

$pdflatex hoge.tex

と処理すればpdfファイルが得られる。
ただし、pm3d mapなどを使うと異常に重くなるのでgnuplotから直接pngで出力するのが良さそう。
f:id:y8ttyan:20141122160527p:plain