プログラマでありたい

おっさんになっても、プログラマでありつづけたい

Railsでグラフを書く Open Flash Chart

Open Flash Chartというグラフツールがあります。その名の通り、フラッシュを使って描画します。グラフの見栄えはかなり良いです。Railsからも簡単に使えるようなので、試してみました。


手順としては、以下の通りです
1.プラグインのインストール
2.ControllerとViewの記述
3.swfobject.jsのコピー
4.open-flash-chart.swfのコピー

詳しい手順はこちらから
Open Flash Chart II Plugin for Ruby on Rails - Graphs(OFC2)

1.インストール

# ruby script/plugin install http://svn.pullmonkey.com/plugins/trunk/open_flash_chart/
+ ./MIT-LICENSE
+ ./README
+ ./Rakefile
+ ./init.rb
+ ./install.rb
+ ./lib/open_flash_chart.rb
+ ./open-flash-chart.swf
+ ./swfobject.js
+ ./tasks/open_flash_chart_tasks.rake
+ ./test/open_flash_chart_test.rb
+ ./uninstall.rb

2.ControllerとViewの記述
サンプルを参照ください。注意しないといけないのは、OFCとOFC2ではクラスの中身が全然違うことです。私も2種類あることを知らずに、OFCをインストールしてOFC2のサンプルコードで動かないと悩んでいました。

OFC

def view
  @graph = open_flash_chart_object(500,250, '/projects/open_flash_chart/bar_chart', true, '/projects/')     
end
def bar_chart
  bar = BarOutline.new(50, '#9933CC', '#8010A0')
  bar.key("Page VIEWS", 10)

  10.times do |t|
          bar.data << rand(7) + 3
  end

  g = Graph.new
  g.title("BAR CHART", "{font-size: 15px;}")

  g.data_sets << bar

  g.set_x_labels(%w(Jan Feb Mar Apr May Jun Jul Aug Sep Oct))

  g.set_x_label_style(10, '#9933CC', 0,2)
  g.set_x_axis_steps(2)
  g.set_y_max(10)
  g.set_y_label_steps(4)
  g.set_y_legend("OPENF LADF", 12, "#736AFF")
  render :text => g.render
end

OFC2

class TestItController < ApplicationController
  def index
    @graph = open_flash_chart_object(600,300,"/test_it/graph_code")
  end

  def graph_code
    title = Title.new("MY TITLE")
    bar = BarGlass.new
    bar.set_values([1,2,3,4,5,6,7,8,9])
    chart = OpenFlashChart.new
    chart.set_title(title)
    chart.add_element(bar)
    render :text => chart.to_s
  end
end

サンプルコードのgraph_codeは表示用のデータを生成しているだけです。実体を直接見ると、数値等の羅列です。当然、単なるデータファイルに置き換えることも可能です。

その他、サンプルはこちら
折れ線グラフ