BLTのgraphのmarkerでグラフにお絵かき

コピーレフトのないオープンソースで、何か図を書いた後emfファイルに書き出す、
この要件を満たすものを探したところ、以前少し触れたBLTが使えることがわかりましたので、
やり方をメモします。

BLTのgraphを使うと、グラフをtcltkのウィンドウ上に描画できます。
また、graphコマンドのsnapコンポーネント(サブコマンド的な位置づけ?)で、
emfファイルに書き出したり、emfをクリップボードに入れることができるようです。

普通にグラフを書く方法は他のページにあるので、ここでは、graphコマンドのmarkerコンポーネント
で、axisが付いたグラフ内にお絵かきをしてみたいと思います。
サンプルコードは、「塗りつぶした四角形を描いてクリップボードにemfをコピーする」というものです。
markerを使えば、他にも、画像を追加したり、線を書いたりサブウィンドウをグラフの中に挿入
したりできるみたいです。
この方法を応用すれば、コンター図とか、ボロノイ図とか、2Dカラーマップとかも
描けるはずです(このあたりはもっと簡単にできる方法があるかもしれませんが…)。

サンプルコード
package require BLT
namespace import blt::*
wm title . "マーカーでお絵かき"

pack [set g [graph .g -plotbackground black]]
$g configure -title "マーカーでお絵かき"

$g axis configure x -title {X Axis} -min 0 -max 20
$g axis configure y -title {Y Axis} -min 0 -max 20
$g marker create polygon -fill red -coords { 5 5 5 10 10 10 10 5 }
$g marker create polygon -fill blue -coords { 10 5 10 10 15 10 15 5 }
$g marker create polygon -fill #404080 -coords { 15 5 15 10 20 10 20 5 }
$g marker create text -outline white -text {Hello world!} -rotate 10 -coords { 15 20 }

after 100 {$g snap -format emf CLIPBOARD}