Rails+Gruffでグラフ画像を生成・表示させる
ちょっと仕事でグラフ表示が必要になったので、メモ。
前提としてRmagickがインストールされている必要がある。インストール方法は割愛。
Rmagickがインストールされたら、gemでGruffをインストール
$gem install gruff
※自分の環境を参考まで。
- ruby 1.8.7
- Rails 2.3.4
- rmagick (2.12.0)
- gruff (0.3.6)
ここでは、画像をローカル上に生成保存するのではなく、imgタグから指定できるよう画像のバイナリをsend_dataでレスポンスする方法とする。
Controller class GruffController < ApplicationController require 'gruff' def image g = Gruff::Line.new 500 g.title = "My Graph" g.theme_37signals g.data("data1", [1, 3, 3, 6, 4, 3]) g.data("data2", [7, 8, 7, 10, 8, 9]) g.data("data3", [1, 2, 3, 5, 9, 8]) g.data("data4", [9, 9, 8, 9, 10, 9]) g.labels = {0 => '2010/01', 2 => '2010/03', 4 => '2010/05'} send_data(g.to_blob, :type => 'image/png', :disposition=>'inline') end end
View
<%= image_tag url_for(:controller => 'gruff', :action => 'image') %>
解説--
はじめにグラフオブジェクトのインスタンスを生成(引数は横幅)
Gruff::Line.new 500
- 折れ線グラフ:Line
- 円グラフ:Pie
- 棒グラフ:Bar
- 横棒グラフ:SideBar
など、詳しくは、Documentを参考⇒http://gruff.rubyforge.org/
背景色やグラフの色はテーマ(theme)としては以下が用意されている。
g.theme_37signals g.theme_keynote g.theme_rails_keynote g.theme_odeo g.theme_pastel g.theme_greyscale
テーマ以外の自分で背景やグラフ線の色を変更したい場合は以下のようにする
theme = { :colors => ["#000", "#111" , "#222", "#333", "#444", "#555"], :maker_color => "#999", :font_color => "#000", :background_colors => %w("#FFF" "#CCC") } g.theme = theme
titleなど日本語フォントを利用する場合は、フォントファイルへのパスを指定する
g.font="/usr/share/fonts/sazanami-fonts-gothic/sazanami-gothic.ttf"
■Gruff Graphs for Ruby
http://nubyonrails.com/pages/gruff
■Gruff Documentation
http://gruff.rubyforge.org/
Railsレシピブック 183の技
posted with amazlet at 10.07.25