class PlotData

gnuplotが扱えるデータフォーマットへの変換

Usage

data0 = PlotData.new(name0,0,3,name)
data0.add_general_data(name1, 0, 2)
start=Time.parse(Time.now.to_s)
x_func = proc{|x| ((Time.parse(x)-start)/3600/24) }
y_func = proc{|y| y.to_f/60.0 }
data0.mk_plot_data(x_func,y_func)
data0.sort
data0.sum_data

Attributes

data[RW]
title[RW]

Public Class Methods

new(file_name="",x_col=nil,y_col=nil,title="") click to toggle source
# File lib/shunkuntype/plot_data.rb, line 19
def initialize(file_name="",x_col=nil,y_col=nil,title="")
  @data=[]
  read_general_data(file_name,x_col,y_col) if ""!=file_name
  @title=title if ""!=title
end

Public Instance Methods

add_general_data(file, x_col, y_col) click to toggle source

@!group data read

# File lib/shunkuntype/plot_data.rb, line 26
def add_general_data(file, x_col, y_col)
  read_general_data(file, x_col, y_col)
end
mk_plot_data(x_func,y_func) click to toggle source

x_func,y_funcに変換関数をyieldで入れる

# File lib/shunkuntype/plot_data.rb, line 56
def mk_plot_data(x_func,y_func)
  tmp_data=[]
  @data.each{|ele|
    x_data = x_func.call(ele[0])
    y_data = y_func.call(ele[1])
    tmp_data << [x_data,y_data]
  }
  @data = tmp_data
end
read_general_data(file, x_col, y_col) click to toggle source
# File lib/shunkuntype/plot_data.rb, line 30
def read_general_data(file, x_col, y_col)
  begin
    File.open(file,'r'){|file|
      while line=file.gets do
        tmp=line.chomp.split(',')
        @data << [tmp[x_col],tmp[y_col]]
      end
    }
  rescue => e
    p e
  end
end
sort() click to toggle source

x軸の値によってsortをかける.

# File lib/shunkuntype/plot_data.rb, line 75
def sort
  @data.sort!{|x,y| x[0] <=> y[0]}
end
sum_data() click to toggle source

y軸の値の積分を取る

# File lib/shunkuntype/plot_data.rb, line 67
def sum_data
  tmp_data=[]
  y_data=0
  @data.each{|ele| tmp_data << [ele[0], y_data+=ele[1]]}
  @data = tmp_data
end
to_gnuplot() click to toggle source

gnuplot libraryに沿った形のdataを出力.

列データを行データに
# File lib/shunkuntype/plot_data.rb, line 46
def to_gnuplot()
  x,y=[],[]
  @data.each{|ele|
    x << ele[0]
    y << ele[1]
  }
  return [x,y]
end