Gruffでグラフを描画する。

RubyでグラフしたいなぁとおもっていたらGruffというのがなかなかよさげ。

  「グラフが美しい」
  「コーディングがシンプル」

Kazuhiro's Weblog: 「Gruff」 with Rubyでスタイリッシュなグラフを描こう

ということで早速使ってみる。

環境の整備

ImageMagick

ここからDLしていんすこ
ソースからmakeしたら結構時間かかるのね。

RMagick

gem install rmagick

Gruff

gem install gruff

Railsから動かしてみる

んでさっそくRailsアプリからサンプルを動かしてみた。
適当なコントローラーに以下のサンプルアプリを動かす。

require 'rubygems'
require 'gruff'

g = Gruff::Line.new
g.title = "My Graph"

g.data("Apples", [1, 2, 3, 4, 4, 3])
g.data("Oranges", [4, 8, 7, 9, 8, 9])
g.data("Watermelon", [2, 3, 1, 5, 6, 8])
g.data("Peaches", [9, 9, 10, 8, 7, 9])

g.labels = {0 => '2003', 2 => '2004', 4 => '2005'}
g.write('my_fruity_graph.png')

めがっさ怒られた。
libMagickCore.so.1: cannot open shared object file: No such file or directory - /usr/lib/ruby/gems/1.8/gems/rmagick-2.4.0/lib/RMagick2.so
lib通さずにコンパイルしたから見たい。。

ln -s /usr/local/lib/libMagickCore.* /usr/lib
ln -s /usr/local/lib/libMagickWand.* /usr/lib

が、こんどはFreeType libraryで怒られる。
Can't measure text. Are the fonts installed? Is the FreeType library installed?
これも入れてないのでghostscriptを入れる。

apt-get install gs gs-esp gs-cjk-resource libfreetype6-dev

うーんまだ怒られるな。

no encode delegate for this image format `my_fruity_graph.png'

画像変換かなということで出力をbitmapにしてやってみると正しく動く。
つまり画像ライブラリ関連が足りてないみたい。なので思いつくものをインスコ

apt-get install libjpeg-dev libpng12-0 libpng12-dev libpng3 
apt-get install alien libxml1 libgtk1.2 libgtk1.2-common netpbm

しかしだめ。でネットをみてたらImageMagickのMake時にpngとかを指定しておかなきゃいけないみたい。
なので、、、ImageMagickを再ビルド。

./configure --with-jpeg=yes --with-png=yes --enable-shared=yes --enable-st=no --enable-lzw=yes
make -j2
make install

コンパイルしなおしたら見事にできた!!!!!
やっふ〜〜!!