Gruffを使ってみる。

gruff_spider.png

Rubyでグラフを出したくて、Gruffを試してみました。
Gruff Graphs for Ruby | Ruby on Rails for Newbies
Gruff with Rails, Typo Rewrite | Ruby on Rails for Newbies
欲しかったのはレーダーチャート(ここではスパイダーグラフって呼んでるみたい)だったのですが、コードを書いてたらImageMagickが

Non-conforming drawing primitive definition `polygon'

なんてエラーを吐きまくる。
じつはベタでデータを2件入れてコードを書いてたんですが、3件以上入れてやらないとポリゴンが書けないってことに気付くまでに2時間くらいかかりました。
Gruff::Spiderのドキュメントに「Experimental!!!」なんて書いてあるんですもん、バグかと思って懸命にspider.rbを読んでしまった・・・。

詳細は下記の通り。(GIGAZINEメソッド)



インストール。libfreetypeとlibpngがパッケージなのは手抜きです。そもそもImageMagickもパッケージで入れればいいんだと気がついたときにはmakeが走ってました。なのでそのまま。

# aptitude install libfreetype6-dev
# aptitude install libpng-dev
# cd /usr/local/src
# wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
# tar zxf ImageMagick.tar.gz
# cd
# ./configure --prefix=/usr/local/im629
...
Option                        Value
-------------------------------------------------------------------------
...
FreeType          --with-freetype=yes           yes
...
PNG               --with-png=yes                yes
...
# make && make install
# export LD_LIBRARY_PATH=/usr/local/im629/lib:$LD_LIBRARY_PATH
# gem install rmagick
# gem install gruff

Railsで使う。といってもRails依存はActionController::Streaming#send_data()くらいですが。
environment.rbに1行追加。

require 'gruff'

適当なコントローラにメソッド追加。

def spider_graph_report
g = Gruff::Spider.new(100, 640)
# タイトル
g.title = 'ゆうしゃ'
# 使うフォント
g.font = File.expand_path('artwork/fonts/meiryo.ttc', RAILS_ROOT)
# グラフの目盛りの最大値
g.maximum_value = 100
# グラフの目盛りの最小値
g.minimum_value = 0
# データが無いときの表示メッセージ
g.no_data_message = 'データがないよ。'
# データ
g.data 'ちから', [70]
g.data 'すばやさ', [40]
g.data 'たいりょく', [80]
g.data 'かしこさ', [20]
g.data 'うんのよさ', [30]
# 37signalsっぽくする
g.theme_37signals
# ファイルとして置く
g.write(filename=File.expand_path('graphs/status.png', RAILS_ROOT))
# クライアントに投げつける
send_data(g.to_blob,
:disposition => 'inline',
:type => 'image/png',
:filename => 'bart_scores.png')
end

メソッドの括弧()ってどんなときに省略してどんなときに省略しない文化なのかがまだよく分かってません。
どなたか教えてくださいまし。

タイトルとURLをコピーしました