gnuplot + PostScriptで多彩なポインタを使う

普通にgnuplotを使う場合、ポインタを星やハート・スペードマークなどにすることはできません。しかし、gnuplot 4.2以降に実装されているwith labels機能を用いると、多彩なポイントを使うことが出来ます。

この方法では、実際のところ文字をポインタの変わりに表示させているのですが、このときPostScriptの絵文字フォントZapfDingbatsを用います。すると、実際にはただの字をプロットしているだけなのですが、画像としては絵文字のポインタを使っているように見えるわけです。

以下に例を示します。

set size ratio 1
unset key
set xrange [-1.1:1.1]
set yrange [-1.1:1.1]

plot "data.dat" \
     using ($1*0.2):($2*0.2):("{/ZapfDingbats=50 \110}") with labels tc rgb "dark-orange",\
     "" using ($1*0.4):($2*0.4):("{/ZapfDingbats=50 \252}") with labels tc rgb "magenta",\
     "" using ($1*0.6):($2*0.6):("{/ZapfDingbats=50 \250}") with labels tc rgb "dark-green",\
     "" using ($1*0.8):($2*0.8):("{/ZapfDingbats=50 \251}") with labels tc rgb "red",\
     "" using ($1*1.0):($2*1.0):("{/ZapfDingbats=50 \253}") with labels tc rgb "blue"

set out "various_pointtype.eps"
set term post eps enhanced "Arial" 20 color
replot
set out
set term win

この例で使っているデータファイルdata.datは以下のようなデータファイルです:

-1 -1
-1 1
1 1
1 -1

このスクリプトを実行すると、以下のようなPostScriptファイルが出力されます。(※gnuplot4.3以降でないと、with labelsの色指定でrgb "colorname"を使えないようです。gnuplot4.2などで色指定をする場合はwith labels lc lt 1のようにします。)

実際にやっていることは、各データ点に{/ZapfDingbats=50 \110}などの文字列を表示させているだけです。しかし、ZapfDingbatsフォントでは、例えば\110は★型に対応するため、PostScriptファイル上では上図のような星型などをポインタとしたプロットになるわけです。

ZapfDingbatsフォントのグリフのリストはgnuplotのフォルダの中にある、docs/psdoc/ps_guide.psの2ページ目にあります。

もし、線も同時に引きたい場合は、with linesのプロットを上打ちします。