問題点
Gnuplot 4.2 (4.x?) では PostScript ターミナルを利用して EPS ファイルを出力する際に PostScript フォントを指定できます。日本語を出力したい場合は GothicBBB-Medium-EUC-H (EUC の場合) を指定することで日本語がゴシック体で出力されます。しかしながら、部分的にフォントを変更することができないため、半角英数字および半角記号も GothicBBB で表示されてしまいます。できれば、半角英数字および記号部分は Helvetica で表示したい処です。
フォント変更スクリプト
私は PostScript ターミナルのパッチを書く力がありません。そこで、英数字および半角記号部分だけを Helvetica で表示するように変更するスクリプト (awk) を書いてみました(一部ゴミが入っています)。
/\[\(GothicBBB/{ if ($1 == "[") { #print $1,$2,$3,$4,$5,$6,$7; printf ( "[ " ); prefix_ja=$2 " " $3 " " $4 " " $5 " " $6 " " $7; str=$8; for (i=9; i<=NF; ++i) str=str " " $(i); } else { #print $1,$2,$3,$4,$5,$6; prefix_ja=$1 " " $2 " " $3 " " $4 " " $5 " " $6; str=$7; for (i=8; i<=NF; ++i) str=str " " $(i); } prefix_en = prefix_ja; sub(/GothicBBB-Medium-EUC-H/, "Helvetica", prefix_en); #print prefix_en; sub(/^\(/, "", str); sub(/\)]$/, "", str); #printf ("%s\n", str); while (length(str)>0) { match( str, "([a-zA-Z0-9:;=.\\-+*/%&$#\\]\\[\\)\\(\\ \\\\])+" ); if ((RSTART == 0) && (RLENGTH == -1)) { printf ("%s (%s)]\n", prefix_ja, str); break; } str_left_abc = substr(str, 1, RSTART-1) ; str_abc = substr(str, RSTART, RLENGTH) ; str_right_abc = substr(str, RSTART+RLENGTH) ; #printf ( "%d, %d: %s, %s, %s:string\n", RSTART, RLENGTH, str_left_abc, str_abc, str_right_abc ) ; if (length(str_left_abc)>0) printf ("%s (%s)]\n", prefix_ja, str_left_abc); if (length(str_abc)>0) printf ("%s (%s)]\n", prefix_en, str_abc); str=str_right_abc; } } $0!~/\[\(GothicBBB/
使い方
Gnuplot で出力した EPS ファイル hoge.eps を変換するには以下のようにします。
$ awk -f conv.awk < hoge.eps > hoge2.eps
生成された hoge2.eps では、半角英数および半角記号のフォントが Helvetica になっているはずです。ただし、すべての半角記号に対応しているわけではないので、関数 match の正規表現を適宜変更する必要があるかと思います。
サンプル
プロットスクリプト: test.plt
# ヒストグラム set style histogram rowstacked set style data histogram set boxwidth 0.75 set title '各地の降水量 (1-6月)' font 'GothicBBB-Medium-EUC-H,24' set xlabel '都市' font 'GothicBBB-Medium-EUC-H,24' set ylabel '降水量 [mm]' font 'GothicBBB-Medium-EUC-H,24' set xlabel 0,-0.5 set ylabel 1,0 # 凡例 set key out center top horizontal samplen 2 width 0 # 余白 set tmargin 3.8 set lmargin 6.5 # 3桁 set rmargin 1.5 set bmargin 3 # 出力 set terminal postscript eps mono enhanced font 'GothicBBB-Medium-EUC-H,24' set output 'test.eps' plot 'test.dat' \ using ($2):xtic(1) title "1月" lt -1 fs pattern 4, \ '' using ($3) title "2月" lt -1 fs pattern 0, \ '' using ($4) title "3月" lt -1 fs pattern 6, \ '' using ($5) title "4月" lt -1 fs pattern 5, \ '' using ($6) title "5月" lt -1 fs pattern 1, \ '' using ($7) title "6月" lt -1 fs pattern 2
データファイル: test.dat (注意: このデータはサンプルです。)
東京 5 5 30 40 50 60 横浜 5 5 20 30 50 60 名古屋 5 5 30 40 60 20 京都 30 20 10 20 30 40 大阪 5 5 10 20 30 40
グラフを生成し、フォントを変更してみます。
$ gnuplot test.plt $ awk -f conv.awk < test.eps > post.eps
グラフを表示させてみます。(クリックで拡大)