3章 その11 RMagickで図を描く
p.42から、Python Imaging Library(PIL)で階層的クラスタをデンドログラムにしてビジュアライズしているので、Rubyでも何とかして絵を描きたい。Processingとか使えれば楽なんだけど。
今回のグラフに必要なのはテキストの配置とラインを引く事だけなので、ImageMagickのRubyラッパーであるRMagickをインストールしてテキストとラインの描画方法を調べた。
RMagickをインストールすればImageMagickも入るらしい
sudo gem install rmagick
windowsではrmagick-win32パッケージを使うっぽい?
このへんを参考にした
フォントへのパスの設定と、フォントサイズ再設定のためにDrawを新規作成しなければならないのがめんどい。
rmagick-test.rb
#!/opt/local/bin/ruby require 'rubygems' require 'RMagick' include Magick WIDTH = 240 HEIGHT = 300 canvas = Image.new(WIDTH, HEIGHT) dr = Draw.new # 楕円 dr.stroke('red') dr.stroke_width(3) dr.fill_opacity(0) dr.ellipse(120, 150, 80, 120, 0, 270) # x, y, widgh, height, 角度 dr.stroke('green') dr.ellipse(120, 150, 70, 130, 0, 290) # 少し形変える # 十字 dr.stroke('purple') dr.stroke_width(5) dr.line(0, HEIGHT/2, WIDTH, HEIGHT/2) # 横線 dr.line(WIDTH/2, 0, WIDTH/2, HEIGHT) # 縦線 # 斜線 dr.stroke('blue') dr.stroke_width(1) for y in 0...20 for x in 0...10 dr.line(x*10, y*10, x*10+10, y*10+10) end end # テキスト dr.font = '/Library/Fonts/Arial.ttf' dr.stroke('transparent') dr.fill('black') dr.pointsize = 12 # 文字サイズ dr.text(180, 140, "Start") # いったん描画 dr.draw(canvas) # 文字サイズを変えるために新しいDrawを使う dr = Draw.new dr.font = '/Library/Fonts/Arial.ttf' dr.stroke('transparent') dr.fill('black') dr.pointsize = 20 # 文字サイズ dr.text(130, 50, "End") # 描画、保存 dr.draw(canvas) canvas.write('img-result.png')