sudo gem install ./gnuplot-2.2.gem
If you have gnuplot already installed it is good, if not install it by
sudo port install gnuplot
.Assuming that everything went well, one can now plot and save figures using Ruby.
Simple example of Ruby code that plots simple data and saves (do not display) it to png file.
#!/usr/bin/env ruby
#testGnuplot.rb
require 'rubygems'
require 'gnuplot'
outFname='graph.png'
xData=[1, 2, 3, 4,5]
yData=[2, 3 ,4, 2,3]
#xData=(0..10).collect { |v| v.to_f }
#yData= xData.collect { |v| v ** 2 }
Gnuplot.open do |gp|
Gnuplot::Plot.new( gp ) do |plot|
plot.output outFname
plot.terminal 'png'
plot.title "Array Plot Example"
plot.ylabel "y"
plot.xlabel "x"
x= xData
y= yData
plot.data << Gnuplot::DataSet.new( [x, y] ) do |ds|
ds.with = "linespoints"
ds.notitle
end
end
end
This is especially useful when one want to plot a lot of figures contained in a data file. Of corese, this is the simples example, and more complicated things require to do some experimenting before desired plots are obtained. Nonetheless, this is good start.
To plot two data on one graph and to save it as png one can do as below:
#!/usr/bin/env ruby
#test.rb
require 'rubygems'
require 'gnuplot'
outFname='graph.png'
xData=[1, 2, 3, 4,5]
yData=[2, 3 ,4, 2,3]
yData2=[1, 2 ,3, 3,4]
Gnuplot.open do |gp|
Gnuplot::Plot.new( gp ) do |plot|
plot.output outFname
plot.terminal 'png'
plot.title "Array Plot Example"
plot.ylabel "y"
plot.xlabel "x"
x= xData
y= yData
plot.data =[ Gnuplot::DataSet.new( [x, y] ) do |ds|
ds.with = "linespoints"
ds.notitle
end,
Gnuplot::DataSet.new( [xData, yData2] ) do |ds|
ds.with = "linespoints"
ds.notitle
end
]
end
end
Results is (graph.png):