Hatena::Grouprubyist

Hatena::Rubyist::Ubuntu このページをアンテナに追加 RSSフィード

July 03(Fri), 2009

Rubyのグラフ用ライブラリGruffを使ってグラフやチャートを描く。

| 11:41 | Rubyのグラフ用ライブラリGruffを使ってグラフやチャートを描く。 - Hatena::Rubyist::Ubuntu を含むブックマーク はてなブックマーク - Rubyのグラフ用ライブラリGruffを使ってグラフやチャートを描く。 - Hatena::Rubyist::Ubuntu Rubyのグラフ用ライブラリGruffを使ってグラフやチャートを描く。 - Hatena::Rubyist::Ubuntu のブックマークコメント

GruffはRubyでグラフ等を描くためのライブラリで、gemでインストールして使うことができる。

http://nubyonrails.com/pages/gruff


ただしライブラリがRMagickを通してImageMagickに依存しているため、それらもあわせて適正なバージョンをインストールする必要がある。


Windowsの場合

Instant Rails 1.7を利用していることを前提とする。以下の記事が参考になる。

Railsで画像をアップしてみよう!(FileColumn,RMagick,ImageMagick) for windows

http://d.hatena.ne.jp/japanrock_pg/20070917/1190021129


ImageMagick-6.2.9-0-Q8-windows-dll.exe を以下から入手する。

http://www.imagemagick.org/script/download.php


rmagick-1.13.0-IM-6.2.9-0-win32.zip を以下から入手する。

http://rubyforge.org/frs/?group_id=12&release_id=8170


ImageMagickとRMagickは最新バージョンではなく、それぞれ組み合わせとして適切なバージョンを用意する必要があるので注意。


Instant Railsのgemは古いのでコマンドでアップデートする。コマンドプロンプトからgemにパスの通った状態で以下の方法でアップデートする。gruffをインストールするためにはgemのバージョン1.3.1以上が必要になる。

gem --version
gem update --system
gem --version

gemが最新になったらrmagickとgruffをインストールする。

gem install --local rmagick-1.13.0-win32.gem
gem install gruff

Ubuntu 8.04 LTSの場合

このあたりの記事を参考に。

RMagick を使って輝きのあるバナー画像を作成する

http://doruby.kbmj.com/akio0911_on_rails/20090115/RMagick__

画像ファイルアップロード

http://rubyist.g.hatena.ne.jp/yuiseki/20081104/1225801693


まずaptでImageMagickとRMagickを入れる。RMagickはImageMagickにあわせてバージョンを指定する必要がある。

sudo aptitude install imagemagick libmagick9-dev
sudo gem1.8 install rmagick -v 1.15.14

Hardyのgemは1.1.1と古いので、最新のrubygemsを入れる必要がある。ソースからビルドしても良いのだが、ここはaptですべて片付ける。


apt-lineをJauntyに向けてaptで入れる。

sudo aptitude update
sudo aptitude install rubygems1.8
gem --version

Jauntyのリポジトリにあるのはrubygems 1.3.1なので、これでgruffが入るはず。なお、apt-lineは忘れずに戻しておく。

sudo gem1.8 install gruff

ちなみにrubygemsをソースからビルドした場合は次の通りにすれば良い。

Rubyの管理パッケージRubyGemsの最新バージョンをインストールする方法

http://it.kndb.jp/entry/show/id/651


グラフを描く


Controller

require 'gruff'

  def graph_draw_line
    @graph = Gruff::Line.new
    @graph.title = "hoge"
    @graph.marker_font_size = 10
    # 最大値及び最小値を設定、設定を省略すると自動、片方だけだとエラー
    @graph.maximum_value = 50
    @graph.minimum_value = 10
    # 色を2色設定するとグラデーション
    @graph.theme = { :background_colors => %w[green white]}
    # 凡例非表示
    @graph.hide_legend = false
    # data(name, [値1,値2…], 'RPG値')
    @graph.data 'test', [14, 28, 34]
    # 列のラベル,0から始まる
    @graph.labels = { 0=> 'hoge', 1=>'fuga', 2=>'piyo' }
    send_data(@graph.to_blob, :type=>"image/png", :disposition=>"inline")
  end

View

<%= tag("img", :src=>url_for(:controller=>"project",:action=>"graph_draw_line")) %>