You are here: Home Blog Comments Tcl(/Tk) でグラフ

Personal tools

Tcl(/Tk) でグラフ

Posted by Rainy Day Codings at 2006-08-27 22:52
Lightweight Language のサイトの「キミならどう書く 2.0 - ROUND 3 -」というトラックバック企画 [1] で今回のお題が「いくつかのデータを与えたときにグラフを出力するプログラム」(細かい仕様無し)ということだった。 今までこの企画で Tcl や Tcl/Tk で参加している人は意外にもいないっぽいので書いてみることにしました(それにこのお題はいかにも Tcl/Tk 向き)。 まずちょっと仕様を制限したもの。キャンバスの幅をはみ出すようなデータは考慮しない。 # graph.tcl pack [canvas .canvas -width 200 -height [expr 20*[llength $argv]] -bg white] set ypos 10 foreach num $argv { .canvas create line 0 $ypos [expr $num*10] $ypos -width 18 -fill blue .canvas create text 2 $ypos -text $num -anchor w -fill white incr ypos 20 } 実行するには wish graph.tcl 2 5 9 18 15 などとする。実行結果はこうなる。 次はちゃんとキャンバスの大きさに合わせて伸縮するようにしたもの。 # graph2.tcl set height 150; set width 200; # キャンバスの大きさ set max [lindex [lsort -integer $argv] end]; # 要素の最大値 set lwidth [expr $height/[llength $argv]]; # 線の取れる太さ pack [canvas .canvas -width $width -height $height -bg white] set ypos [expr $lwidth/2] foreach num $argv { set xpos [expr $width*$num/$max] .canvas create line 0 $ypos $xpos $ypos -width [expr $lwidth-2] -fill blue .canvas cre...
Parent entry キミならどう書く 2.0 - ROUND 3 -