ランプの中身(Ruby on Railsのシステム開発)
ランプの中身(Ruby on Railsのシステム開発)では、株式会社ケイビーエムジェイのRuby on Railsエンジニアが蓄積したノウハウを公開しています。Ruby on Railに関する技術解説や実践的なノウハウなど、開発現場の技術に則したコンテンツを随時追加していきます。 初心者の方でもわかりやすい技術解説を心がけています。リクエスト、ご質問も受け付けいますので、ご気軽にコメントを記述して下さい。

< Rails プラグイン : Rails ... | メイン | RJSを用いて、日付プルダウンメニューを... >

tnの中身(Ruby
2008.02.19

Rails プラグイン : CSS Graphsの使い方(そしてちょっとだけ改造)


 

こんにちは。tnです。

今回はCSSによってグラフ表示を実現するCSS Graphsというプラグインを紹介したいと思います。

http://nubyonrails.com/pages/css_graphs

 

 

 

まずは

ruby script/plugin install http://topfunky.net/svn/plugins/css_graphs

でインストールしましょう。自動的に標準のRailsヘルパーになるそうです。

 

続いて、グラフに使う画像イメージをgeneratorを使ってコピーします。

ruby script/generate css_graphs
これで準備完了。あとは実際にグラフを貼りたいview上に
<%= bar_graph  [['test1', 54],
['test2', 25],
['test3', 81]] %>

と記述すると、

bar_graph

こんなグラフを表示することが出来ます。

 

他に

<%= horizontal_bar_graph  [['test1', 54], 
['test2', 25],
['test3', 81]] %>
horizontal_bar_graph

 

 

<%= complex_bar_graph  [['test1', 54], 
['test2', 25],
['test3', 81]] %>
complex_bar_graph

といったグラフが生成できます。

 

 

また、ちょっと変り種として、multi_bar_graphというものもあります。

<% @data_for_graph = [
[['James',175],['John',180],['Thom',168],['Taro',200]],
[['James',60],['John',75],['Thom',52],['Taro',110]]
] %>
<%= multi_bar_graph @data_for_graph, {:width => 300,:height => 250}) do |index,variable|
url_for( :action => 'show', :id => index)
end %>
complex_bar_graph

赤が身長で黄色が体重というデータ…のつもりです。それぞれのグラフはリンクになっていますので、この例の場合、各個人の詳細なプロフィールページに飛ばしてみるのもいいでしょう。

 

multi_bar_graphの第2引数にはグラフのオプションを記述します。

  • :width => 枠の横幅
  • :height => 枠の高さ
  • :display_value_on_bar => trueのとき、各グラフの数値を表示。
  • :colors => グラフの色を指定
  • :color_by => 色分けを、グラフの種類毎('dimension')か、個別のデータ毎('index')から選ぶ。

 

 

なお、このプラグインを扱う上での注意は、

  • グラフは1ページに1つしか作れない
    表示位置がかぶったりするようです。
  • グラフに用いる値は0-100の間
    基本的にパーセンテージを表すグラフのためでしょうか。

 

 

ちょっと改造してみる

ところで、ひとつ気になったのが、bar_graphのグラフ枠の横幅。

bar_graph
bar_graph 5本

これは、どうやらグラフの棒が5本であること前提のようです。

 

6本で試すと、

bar_graph 6本

この通り、なんとなく残念な表示になってしまいます。

 

そこで、vendor/plugins/css_graphs/lib/css_graphs.rbをエディタで開き、以下のように書き換えます(抜粋/12行目辺り)。

 

def bar_graph(data=[])
width = 378
height = 150
colors = %w(#ce494a #efba29 #efe708 #5a7dd6 #73a25a)

after

def bar_graph(data=[])
width = 76 * data.size
height = 150
colors = %w(#ce494a #efba29 #efe708 #5a7dd6 #73a25a) * (((data.size - 1)/5)+1)

 

そうすると、
bar_graph改良
いい感じになりました!

 

そのままの状態ではちょっと使いづらいなと思うプラグインも、ちょこっと手を加えてみるとより良くなりますね。それでは、また。

コメント (0)  |トラックバック (0)

ブックマークに追加する Subscribe with livedoor Reader あとで読む

トラックバック URL

この記事にコメントする

ニックネーム:
メールアドレス:
URL:


KBMJのWebソリューション
Ruby on Rails Summer Festival 2008開催決定!!

TOPICS

2008/06/25
ZD Net Builder」の連載記事です。第四回は「Rubyでどう書く?:重複したRSSをまとめる」が掲載されました。

2008/05/30
ZD Net Builder」の連載記事です。第三回は「Rubyでどう書く?:Rubyで特定URLの画像パス一覧を表示する」が掲載されました。

2008/05/07
ZD Net Builder」に連載を始めました。第二回は「Rubyでどう書く?:RubyでPDF履歴書を作成する」が掲載されました。

2008/04/24
アットマーク・アイティ」に『 Rubyを使ってPaSoRi経由でSuicaの乗車履歴を取得し、GoogleMapsやGoogleEarthで表示する』が掲載されました。

カテゴリ

全体のRoR最新ブログ一覧

プロフィール

  • tn
  • 新人エンジニアtnです。

    このブログでは主にRuby on Railsのプラグインの紹介をして行きます。
    開発の手助けになれば幸いです。

    ■開発環境
    OS
    ・自宅ではUbuntu on VMware on Windows XP
    ・会社ではMac OS X
    Rails
    ・1.2.5

    ブログは主に自宅で書いています。

ブログの購読

RSS

timelog
株式会社ケイビーエムジェイロゴ