Skip to content

Ruby/Tkで簡単にグラフを作成する

普通の人はRとかGnuplotとかに処理を投げ飛ばすか諦めてPythonを使う。だが、このページでは Plotchart 拡張Tkパッケージ Plotchartを使う。拡張Tk導入の方法についてはこのページの下の方参照。
Rubyだけで作業が完結するというメリットがある。Visualizationは大事。

棒グラフを描く

注意するところは[0,10,2] が [最小値,最大値,間隔]を意味すること。この記法がPlotchartでは頻出する。
graph1

遊んでみる1
plot

遊んでみる2
3dbar
Barchart3Dを使う

3Dのグラフ

3d
まあ、数学とかよくわかんないんで、とりあえず色が綺麗だったらそれでいいです。ハイ。

「tcl plotchart」でググるると、ドキュメント壊滅。生えてきたぺんぺん草を、丁寧に一本ずつむしったような状態。
情報は皆無なので、Ruby/Tkのソースや、ソースに添付してあるサンプル、ActiveSatesのTcl/Tkの資料を読むしかない。
https://github.com/ruby/ruby/tree/trunk/ext/tk/sample/tkextlib/tcllib

折れ線グラフを描く

p2

散布図を描く

XYPlot
自治体の 15~64歳人口 と 出生数 の関係。意外と綺麗な相関がある。
DATAは統計局のホームページのxlsからrooライブラリで取得した。

円グラフを描く

pop

箱ひげ図を描く

配列をそのまま渡して tcl/tk 側に渡して処理してもらうらしい。ワイルドである。
boxplot
※Windowsだと動かない模樣。原因は不明。

CPUの負荷率をリアルタイムに表示する

少しは役に立ちそうなものを書いてみる。
CPUの1分平均負荷率をuptimeコマンドから取得して、リアルタイムにグラフ表示してみた。

Tk::Tcllib::Plotchart::Stripchart は表示が右端まで行くと、自動的にスクロールしてくれる便利なやつだ。

plot1

plot2

Ruby/Tkは、とりあえず、拡張Tkを使えるようになるまでの道のりが遠いと思う。

Macユーザーの場合、Apple謹製のTkが入っていたり、MacPortsのTkが入っている。
だからActiveStateに行って、ActiveTclダウンロードして、さらにteapot(Tcl Package Manager)を使って拡張Tkパッケージを取ってこなくちゃいけないことなんて気づかない。

とりあえずMacPortsで何でもゲットすればいい、Tcl/Tkって何ですか?って思っている日曜プログラマにとって、これは敷居が高かった。みんなこのへんで疲れてRuby/Tkが嫌になっちゃうんじゃなかろうか。
極端な話、どこかでPlotchartをダウンロードしてRubyのTclTkが入ってるフォルダにコピペすれば動くのだが。

でもPlotchartに関して言えばMacには最初から入っていたから、ジタバタしないでも大丈夫。ActiveStateとかに触れなくてもOKだ。

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*