2008年 12月 1日 掲載
psxyコマンドには,まだまだたくさんの機能があるのだが, たまには違うコマンドもためしてみたい. ということで,今回あつかうのは pstextコマンドである.
pstext は,文字(text)を描画するコマンドである. さっそくためしてみよう.まずは,コマンドを単独で実行してみる.
$ pstext pstext 4.2.1 - To plot text on maps usage: pstext <txtfile> -J<params> -R<west>/<east>/<south>/<north>[/<zmin/zmax>][r] [-A] [-B<params>] [-C<dx>/<dy>] [-D[j]<dx>/<dy>[v[<pen>]] [-Eaz/el] [-G<color>] [-H[<nrec>]] [-K] [-L] [-M[<flag>]] [-N] [-O] [-P] [-S<pen>] [-U[/<dx>/<dy>][<label>]] [-V] [-W[<fill>,][o|O|c|C[<pen>]]] [-X[a|c|r]<x_shift>[u]] [-X[a|c|r]<x_shift>[u]] [-Z<zlevel>] [-:[i|o]] [-c<ncopies>] Reads (x,y,size,angle,fontno,justify,text) from <txtfile> [or stdin] OR (with -M) one or more text paragraphs with formatting info in the segment header. justify is of the form [T|M|B][L|C|R] (top/middle/bottom/left/center/right) Built-in escape sequences: @~ toggles between current font and Symbol font @%<no>% switches to font number <no>; @%% resets font …
標準エラー出力に使い方がずらっと出てくる. 最初の方に <txtfile>(または標準入力)から, x, y, size, angle, fontno, justify, text を読むとある. これまでの psxyコマンドでは,せいぜい 3項目しかデータがなかったから, ずいぶん多く感じる.これをひとつずつ見ていこう.
x, y は,描画する位置座標である.これは psxy と変わらない.
size は文字のサイズだが,単位は何だろう. これは man(man pstext)にポイントで指定すると書いてある.
angle は描画する角度だが,これの説明も man に書いてあり, x方向から反時計回りの「度(degrees)」で指定する.
fontno はフォントの番号である.これは pstext の man を読むと, gmtdefaults の man を読むか,pstext -L を実行せよ,と書いてある. 今回は pstext -L を実行してみる.
pstext 4.2.1 - To plot text on maps usage: pstext <txtfile> -J<params> -R<west>/<east>/<south>/<north>[/<zmin/zmax>][r] … Font # Font Name ------------------------------------ 0 Helvetica 1 Helvetica-Bold 2 Helvetica-Oblique 3 Helvetica-BoldOblique 4 Times-Roman 5 Times-Bold 6 Times-Italic 7 Times-BoldItalic 8 Courier 9 Courier-Bold 10 Courier-Oblique 11 Courier-BoldOblique 12 Symbol 13 AvantGarde-Book 14 AvantGarde-BookOblique 15 AvantGarde-Demi 16 AvantGarde-DemiOblique 17 Bookman-Demi 18 Bookman-DemiItalic 19 Bookman-Light 20 Bookman-LightItalic 21 Helvetica-Narrow 22 Helvetica-Narrow-Bold 23 Helvetica-Narrow-Oblique 24 Helvetica-Narrow-BoldOblique 25 NewCenturySchlbk-Roman 26 NewCenturySchlbk-Italic 27 NewCenturySchlbk-Bold 28 NewCenturySchlbk-BoldItalic 29 Palatino-Roman 30 Palatino-Italic 31 Palatino-Bold 32 Palatino-BoldItalic 33 ZapfChancery-MediumItalic 34 ZapfDingbats
簡単な使い方のあとに,使えるフォントと番号の一覧が出てきた. 35種類のフォントが使えるようである.
justify は,位置座標をテキストのどこにするかの指定で, アルファベット 2文字 [T|M|B](top/middle/bottom) と [L|C|R](left/center/right) の組合せで指定するとある. [T|M|B]は,指定した y座標がテキストの上辺(Top)か, まん中(Middle)か,下辺(Bottom)かの指定で, [L|C|R]は,指定した x座標がテキストの左辺(Left)か, まん中(Center)か,右辺(Right)かの指定である.
text は,描画したい任意のテキスト文である.
パラメータが,ひと通りわかったところで,早速描画をためしてみる. まずは簡単な例から.
$ echo '0 0 32 0 0 MC Hello, world!' | pstext -R-2/2/-2/2 -Jx2 > helloworld.eps
この例では,データファイルを作らず, echo の出力をパイプで pstext の標準入力にわたしている. 座標 (0, 0)に中心がくるように(MC), Helvetica(0) で,32ポイントの「Hello, world!」を, 水平 (0) に描画した.
次に,justify を変えた場合をためしてみる. まずは,以下のようなファイル justify.txt を作るか, ダウンロードする(justify.txt はこちら).
$ cat justify.txt 0 0 16 0 0 MC [MC] 1.4 0 16 0 0 ML [ML] 1 1 16 0 0 BL [BL] 0 1.4 16 0 0 BC [BC] -1 1 16 0 0 BR [BR] -1.4 0 16 0 0 MR [MR] -1 -1 16 0 0 TR [TR] 0 -1.4 16 0 0 TC [TC] 1 -1 16 0 0 TL [TL]
これを,psxyコマンドと pstextコマンドで描画する.
$ psxy justify.txt -R-2/2/-2/2 -Jx2 -K > justify.eps $ pstext justify.txt -R -J -O >> justify.eps
中央の点と八角形の頂点が,それぞれ指定した xy座標で, 指定した justify の値をテキストで描画している. xy座標とテキストの位置関係がわかるだろうか.
次は angle を変える例をためす. justify を ML と指定して,左端を (0, 0) に固定し, 60度づつ回転させてみた.
$ awk 'BEGIN{for(i=0; i<360; i+=60) print 0, 0, 16, i, 0, "ML", "--- "i" ---"}' > angle.txt $ pstext angle.txt -R-2/2/-2/2 -Jx2 > angle.eps
fontno を変える例としては,pstext -L の出力を使って, フォントの一覧表を作ってみる. 位置の微調整で試行錯誤をくり返すので,シェルスクリプトを書いた.
#!/bin/sh pstext -L 2>&1 | tail -35 |\ awk '{print int($1/18)*12, 17 - $1%18, 16, 0, $1, "ML", $1":"$2}' > font.txt pstext font.txt -R-1/25/-1/18 -Jx0.8 > font.eps
[ KDOホームにもどる ] [ いちからはじめる GMT インデックスにもどる ]
(C) 2008 KDO