Open Flash Chartでレーダーチャートを作成
Railsのプラグインopen_flash_chartでレーダーチャートを作成しようとしたんですが、なかなか上手くいかなかったので、結局PHPのサンプルソースをRubyで書き換えました。
RAILS_ROOT/app/controllers/test_it_controller.rb:
class TestItController < ApplicationController def index @graph = open_flash_chart_object(600,300,"/teams/graph_code_radar") end def graph_code_radar chart = OpenFlashChart.new chart.set_title(Title.new('Radar Chart')) values = [30, 50, 60, 70, 80, 90, 100, 115, 130, 115, 100, 90, 80, 70, 60, 50] spokes = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p'] vals = [] values.each_with_index do |value, i| tmp = SolidDot.new(value) tmp.set_tooltip("#val#<br>Spoke: #{spokes[i]}") vals.push(tmp) end line = Line.new() line.set_values(vals) line.set_width(2) line.set_colour('#FBB829') line.set_key('Hearts', 10) line.loop() chart.add_element(line) r = RadarAxis.new(150) r.set_steps(10) r.set_colour('#DAD5E0') r.set_grid_colour('#EFEFEF') spoke_labels = RadarSpokeLabels.new(spokes) r.set_spoke_labels(spoke_labels) chart.set_radar_axis(r) tooltip = Tooltip.new() tooltip.set_proximity() chart.set_tooltip(tooltip) render :text => chart.to_s end end
RAILS_ROOT/app/views/test_it/index.html.erb
<script type="text/javascript" src="/javascripts/swfobject.js"></script> <%= @graph %>
これでちゃんと表示されました。
で、それまでなぜ上手くいかなかったかというと、
Line.new()しているところを、LineHollow.new()とかLineDot.new()としていたからみたいです。
そうすると線の種類はどうやって設定するんだろう?
もうちょっと調査が必要ですね。
ちなみに参考にしたPHPはこちらです。項目名を表示させたかったので以下のコードを追加しています。
spoke_labels = RadarSpokeLabels.new(spokes)
r.set_spoke_labels(spoke_labels)