gnuplot で pdf が出力されないときは unset output (unset terminalでも良い)などを指定すると上手くいくことがあります。
LaTeXで使うならepsよりもpdf
dvipdfmxでpdfにすることが多いですが、そのときは図面をeps ファイルにして埋め込むよりも、pdf ファイルにして埋め込む方が速いようです。
gnuplot でも pdf に出力できますが、少し注意する点があります。
複数ページをサポートするformatの場合はページの終わりを指示する必要がある
特に対話モードの場合に注意が必要です。
gnuplot FAQに 7.6 My output files are incomplete!という項目があります。 要点としてはpdfのように複数ページをサポートするformatの場合は、ページの終わりを指示しないと出力ファイルがクローズされません。
ですからunset outputして初めてpdfが出力されます。
epsやpng、emfのようにいつでも1ページのformatでは、このような問題は生じません。
具体的にページの終わりを指示するには
unset outputあるいは
set outputを最後に入力します(set outputの場合は出力ファイルを指定せずに、空ままにしておきます)。
または
unset terminal
set terminal pop
でもOKです。
set terminal pop はデフォルトのterminalに復帰させるコマンドです。
Emacsのgnuplot-modeは、対話モードで起動されているプロセスバッファに対して、バッファの内容を1行ずつ流し込んでいるため、明示的にページの終わりを知らせる必要があります。(別のgnuplot modeもありますが、この場合はファイルをbatch modeでgnuplot に渡しているため、”unset output”が無くても正しいpdf が生成されます。)
pdf で出力するには terminal は pdfcairo を指定する
pdf でグラフを出力するには terminalに pdfcairo を指定します。以下は一例です:
set terminal pdfcairo color enhanced font "Helvetica,18" set output "pdf-test.pdf" set xlabel 'xlable' font "Helvetica,18" set ylabel 'ylable' font "Helvetica,18" set tics font "Helvetica,18" set xrange [:] set yrange [:] plot sin(x) title "" with lines \ lc rgb hsv2rgb(0, 1, 1) lt 1 set terminal pop
(おまけ) eps からpdfを生成するには
gnuplot の epsとpdf の出力エンジンは違うようで、結果が微妙に異なることがあるようです。 もしも、epsの出力の結果が好みの場合は次のようにパイプを使えばpdfに出来ます。
set terminal postscript esp enhanced set output "| epstopdf -f -o=hoge.pdf"