51.67 Tkcanvas

このドライバは Tcl/Tk ベース (デフォルト)、または Perl ベースの Tk canvas widget コマンドを生成します。これを使うには、"term.h" のこのド ライバに対応する行のコメント記号を外すか適当な行を書き加えて gnuplot を make し直して、以下のように実行します。


gnuplot> set term tkcanvas {perltk} {interactive}
gnuplot> set output 'plot.file'

そして "wish" を起動した後で、以下の Tcl/Tk コマンド列を実行してください:


% source plot.file
% canvas .c
% pack .c
% gnuplot .c

Perl/Tk の場合は以下のようにしてこのプログラムを使います:


use Tk;
my $top = MainWindow->new;
my $c = $top->Canvas->pack;
my $gnuplot = do "plot.pl";
$gnuplot->($c);
MainLoop;

gnuplot によって生成されたコードは "gnuplot" と呼ばれる手続きを作り、 それはその引数を canvas の名前とします。その手続きが呼ばれると、それは canvas をクリアし、canvas のサイズを見つけ、その中に丁度収まるようにグ ラフを書きます。

2 次元の描画 (plot) では 2 つの手続きが追加されて定義されます: "gnuplot_plotarea" は描画範囲の境界を含むリスト "xleft, xright, ytop, ybot" を canvas スクリーン座標で返し、2 つの対の軸の描画座標での範囲 "x1min, x1max, y1min, y1max, x2min, x2max, y2min, y2max" は手続き "gnuplot_axisranges" を呼べば得られます。"interactive" オプションを指 定すると、canvas の線分上でマウスをクリックするとその線分の中点の座標 が標準出力に出力されるようになります。さらに、"user_gnuplot_coordinates" という手続きを定義することで、それに代わる新たな動作を起こすことも可能 です。その手続きには以下の引数が渡されます: "win id x1s y1s x2s y2sx1e y1e x2e y2e x1m y1m x2m y2m"、これらは、canvas の名前、線分の id、2 つの座標系でのその線分の開始点の座標、終了点の座標、そして中点の座標です。中点の座標は対数軸に対してのみ与えられます。

tkcanvas の現在の版では multiplotreplot もサポートしていませ ん。

竹野茂治@新潟工科大学
2009年4月5日