gruff0.3.0でグラフ描画してみる→何か変だ


↑のようなグラフは出力できたけど、何か変なのでメモ。
環境はUbuntu 7.10 Serverです。

rmagickの導入。

% sudo gem install rmagick
Updating metadata for 19 gems from http://gems.rubyforge.org
...................
complete
Building native extensions.  This could take a while...
ERROR:  Error installing rmagick:
        ERROR: Failed to build gem native extension.

/usr/bin/ruby1.8 extconf.rb install rmagick
checking for Ruby version >= 1.8.2... yes
checking for Magick-config... yes
checking for ImageMagick version >= 6.3.0... no
Can't install RMagick 2.2.2. You must have ImageMagick 6.3.0 or later.
(略)

とか出るので、ImageMagickの6.3.0を入れる。Ubuntuのパッケージは6.2.4までしかないのでソースから導入。

% wget ftp://ftp.kddlabs.co.jp/graphics/ImageMagick/ImageMagick-6.3.8-2.tar.gz
% cd ImageMagick-6.3.8/ 
% ./configure
% make 
% sudo make install
% sudo ln -s /usr/local/lib/libMagick.so.10 /usr/lib/
% sudo ldconfig /usr/local/lib/

再度rmagickの導入。

% sudo gem install rmagick

gruffの導入

% sudo gem install gruff

サンプルプログラムを作成

#!/usr/bin/ruby -Ku

# gra.rb

require 'rubygems'
require 'gruff'

g = Gruff::Line.new(500)
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')

実行。

% ruby gra.rb                                                                                                      
/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- /usr/lib/ruby/gems/1.8/gems/gruff-0.3.0/lib/gruff/bullet (LoadError)
        from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
        from /usr/lib/ruby/gems/1.8/gems/gruff-0.3.0/lib/gruff.rb:25
        from /usr/lib/ruby/gems/1.8/gems/gruff-0.3.0/lib/gruff.rb:5:in `each'
        from /usr/lib/ruby/gems/1.8/gems/gruff-0.3.0/lib/gruff.rb:5
        from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:32:in `gem_original_require'
        from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:32:in `require'
        from gra.rb:4

bulletが見つからないと言われ、パッケージにも入ってる気配がないので、gruff.rbから削ってみる。
/usr/lib/ruby/gems/1.8/gems/gruff-0.3.0/lib/gruff.rb

# Extra full path added to fix loading errors on some installations.

%w(
  base
  area
  bar
  bullet #削除
  line
  pie
  spider
  net
  stacked_area
  stacked_bar
  side_stacked_bar
  side_bar
  accumulator_bar

  scene

  mini/legend
  mini/bar
  mini/pie
  mini/side_bar
).each do |filename|
  require File.dirname(__FILE__) + "/gruff/#{filename}"
end

再度実行してみると、以下のエラー。

RMagick: Postscript delegate failed

以下を導入。

% apt-get install 'ghostscript*'

再度実行。

% ruby gra.rb                                                                                                 
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.
RMagick: unable to read font `(null)'.

なんかエラーっぽいのが出るが、my_fruity_graph.pngも出力される。
とりあえず、ここまで。さて、どうしよう。