メモの日々


2009年03月03日(火) [長年日記]

[ruby][dev] Ruby Gnuplotを使った

星形

Ruby Gnuplotを使ったのでメモ。

Ruby GnuplotはgnuplotをRubyから使うためのライブラリ。gnuplot自体を使ったことがない(大昔に使ったかも)ので苦労したが、なんとか動かせた。

星形を描くサンプルプログラムを示す。

#!/usr/bin/ruby
#coding: utf-8

require "rubygems"
require "gnuplot"

# プロットするデータ
triangle1 = [[10,  70,  40], [20, 20,  70],
             [60, -30, -30], [ 0, 50, -50]]
triangle2 = [[10,  70,  40], [60, 60,  10],
             [60, -30, -30], [ 0, -50, 50]]

Gnuplot.open {|gp|
  Gnuplot::Plot.new(gp) {|plot|
    # gnuplotにsetできるオプションは全てPlotクラスのメソッドになっている
    plot.terminal("png")
    plot.output("graph-sample.png")
    plot.xrange("[0:80]")
    plot.yrange("[0:80]")
    plot.size("square 0.5,0.5")
    plot.title("Star")

    triangle1[0].each_index {|i|
      plot.label("\"[#{i}]\" at #{triangle1[0][i]},#{triangle1[1][i]}")
    }

    # プロットするデータをDataSetへ込めてPlot#dataに設定する
    plot.data = [
      Gnuplot::DataSet.new(triangle1) {|ds|
        ds.with = "vectors"
        ds.notitle
      },
      Gnuplot::DataSet.new(triangle2) {|ds|
        ds.with = "vectors"
        ds.notitle
      }
    ]
  }
}

やること

  • 請書