読者です 読者をやめる 読者になる 読者になる

【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

やっと使えるようになった…(=_=)