[2010-09-08 18:31:00]
>>>[ruby]
>>>[gruff]
>>>[org]
結論
Gentoo/Prefixで挑戦したら沼にはまります
手順
概略(http://rmagick.rubyforge.org/install-osx.htmlを参考に)
- MacPortsでImageMagick(リンク先のStep2),rb-rmagickをいれる.
- MacPortsで入れたgemでrmagick(リンク先のStep3),gruffをいれる.
以上
ようするにMacPortsでrb-rmagickを入れたらよかったというわけですね.
ちなみにrb-rmagickは,直前の記事の内容をちょいちょいやってやる必要があります
というわけでorg-babelから美しいグラフをば拝まん
#+begin_src ruby :file my_fruity_graph.png :width 400 :height 400 #!/opt/local/bin/ruby require 'rubygems' require 'gruff' g = Gruff::Line.new g.title = "My Graph" g.data("Apples", [1, 2, 3, 4, 4, 3]) g.data("Oranges", [4, 8, 7, 9, 8, 9]) g.data("Watermelon", [2, 3, 1, 5, 6, 8]) g.data("Peaches", [9, 9, 10, 8, 7, 9]) g.labels = {0 => '2003', 2 => '2004', 4 => '2005'} g.write('my_fruity_graph.png') #+end_src #+results: [[file:my_fruity_graph.png]]
ソースコードのところでC-cC-cすると下にresults:画像のリンクができます.リンクの上でC-cC-oすると,そのリンクにジャンプして,画像を開いてくれます.
これが最初のグラフの画像でした.
org-babelらしく表からデータ持ってきて.っていうのが,Rubyでの配列とかどうやって使うのかわからんくてつかえない...
org-babel上の表からデータを持ってきて,gruffでグラフを描画
上と同じデータをorg-babelっぽく使ってみましょう
** gruffのテスト #+TBLNAME: fruits | | 2003 | | 2004 | | 2005 | | | Apples | 1 | 2 | 3 | 4 | 4 | 3 | | Oranges | 4 | 8 | 7 | 9 | 8 | 9 | | Watermelon | 2 | 3 | 1 | 5 | 6 | 8 | | Peaches | 9 | 9 | 10 | 8 | 7 | 9 | このグラフをgruffで描く #+SOURCE: test2(frtable = fruits) #+begin_src ruby :file my_fruity_graph.png :width 400 :height 400 #!/opt/local/bin/ruby require 'rubygems' require 'gruff' g = Gruff::Line.new g.title = "My Graph" for dat in frtable[1..-1] do g.data(dat[0], dat[1..-1]) end g.labels = {0 => "#{frtable[0][1]}", 2 => "#{frtable[0][3]}", 4 => "#{frtable[0][5]}" } g.write('my_fruity_graph.png') #+end_src #+results: test2 [[file:my_fruity_graph.png]]
こんな感じに#+SOURCE: のところに,frtable=fruitって書いとくと,rubyでの変数frtableに#+TABLE: fruitの表のデータが二次元配列として代入された状態でRubyが実行されます.
frtable[行][列]
てわけで,g.dataの引数に,1列目のラベルと,残りのデータを引数に渡してます.
g.labelの引数の渡し方がもうちょっとうまく渡せそうな気がするんやけど,まだ知識不足です.
ま,それなりに便利になりそうですね.
*1:なんて考えた私が馬鹿でした