【Ruby】グラフ描画用gem Gruffのインストール
Rubyを使ってグラフ描画が出来るGruff
http://nubyonrails.com/pages/gruff
公式サイトには
gem install gruff
と記述されていますが… はまりました!/(^o^)\
gem install gruffをすると…
Building native extensions. This could take a while... ERROR: Error installing rmagick: ERROR: Failed to build gem native extension. /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb checking for Ruby version >= 1.8.5... yes checking for gcc... yes checking for Magick-config... no Can't install RMagick 2.13.1. Can't find Magick-config in /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin:~/bin:/usr/local/bin:/usr/local/mysql/bin:/usr/local/pear/bin *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options.
GruffにはRMagickが必要となるのですが、そのために必要なImageMagickを入れる所がうまく行っていませんでした…
そこで、ソースからではなく、MacPortsから入れよう!としたところ…
公式サイトのやり方
sudo port install tiff -macosx imagemagick +q8 +gs +wmf
でも、エラーが出てしまいます…
"+q8+wmf" do not match original selection "+q16"
調べても、よい解決法が見つからなかったときに…「Homebrewなら簡単だよ!」というコメントを発見。
せっかくなので、MacPortsからHomebrewに移行しました!
MacPortsからHomebrewに移行手順
参考サイトはこちら
http://d.hatena.ne.jp/jitsu102/20101106/1289004240
同じ手順で、Homebrewに移行しました!簡単に出来ました!(*´ω`*)
(/opt/local/share/macportsや他にもmacportsの残骸が残っている気がするのですが…これでいいのか…不安を残しつつ…)
.bashrcなどにpathの設定はいらないので、MacPortsの為に記述していた部分を削除しておきましょう。
HomebrewでImageMagickインストール
brew install ImageMagick
あっさり成功!/(^o^)\
続いて…
gem install rmagick
Fetching: rmagick-2.13.1.gem (100%) Building native extensions. This could take a while... Successfully installed rmagick-2.13.1 1 gem installed Installing ri documentation for rmagick-2.13.1... Installing RDoc documentation for rmagick-2.13.1...
こちらもあっさり成功/(^o^)\
MacPortsを消した関係で、元々いれていたMercurialや等消えてしまったため、幾つか追加は必要でしたが…
Homebrewで最低限、
- libiconv
- gs
を入れたら、ちゃんとRMagickが動きました!!
(↑が必要だったのはnokogiriを使っていた関係もありそうです)
Gruffでグラフを描画する!
いよいよGruffですが、公式サイトなどに例があったりします。分かりやすいです。
公式サイトのサンプル
#!/usr/bin/ruby 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')
ただし、1つ問題が。
グラフのタイトル部分が日本語だと文字化けします。
force_encoding("utf-8")で強制的に変えてみてもだめでした。
「デフォルトのフォントだと日本語が文字化けする」
(http://d.hatena.ne.jp/osakanas/20060926/p1)
という事で、設定します。
さっきのサンプルに追加で
g.font = "/Library/Fonts/<適当なフォント>.ttf"
とすると、文字化けが治りました!
こんな感じのグラフで、意外に綺麗にできます!
http://topfunky.com/clients/rails/gruff/line_theme_odeo_400.png
やっと使えるようになった…(=_=)