gnuplot で EPS で作ったスペクトログラムの中身だけラスタライズ(?)
gnuplot でスペクトログラムを EPS で作成したらファイルサイズが非常に大きくなった。軸ラベルのフォントや文字をあとで変更する可能性を考えると EPS や PDF で作成しておきたい。はじめは EPS で出力してスペクトログラムの枠の中身だけラスタライズすることを考えたが,メモリを食いつぶしてしまい Illustrator や Inkscape では開くことができなかった。そこで,中身だけを PNG に変換してしまい,後から EPS に PNG を埋め込むことにした。あ,環境は Linux Mint です。
要約
中身だけ(枠や目盛りなしで)のグラフを出力する
set margin 0 set noborder set notics set nocolorbox # スペクトログラムなので
これで中身だけ出てくる。なぜか余白があるので, epstool で除去する。 参考:Untitled blog: [EPS]余白をなくす
$ epstool --copy -b input.eps input_crop.eps
これを PNG に変換する。
$ convert -density 600 input_crop.eps input_crop.png
PNG を埋め込んだグラフを出力する
このサイトに従う:gnuplotのグラフにPNG・JPGファイルなどを埋め込む - 米澤進吾 ホームページ
#! /usr/bin/gnuplot reset set multiplot ###1 set size 1, 1 set origin 0, 0 set margin 0 set noborder set notics set size ratio -1 set autoscale xy plot "input_crop.png" binary filetype=png with rgbimage notitle ###2 unset size unset origin unset margin set pm3d map splot 'dummy.csv' notitle unset pm3d unset multiplot if (exist("FLAG") == 0) \ set out "output.eps";\ set terminal postscript eps color;\ FLAG = 1; reread undefine FLAG set out unset key unset output
上記を hoge というファイル名で保存した時, $ gnuplot hoge
で実行する。すると,スペクトログラムの中身の PNG を埋め込んだ EPS ファイルが生成される。
これ書きながら思ったんですが,はじめから epslatex で出しとけばよかったのでは???