gnuplot timeseries


R

Rob Redmon

Does anyone have an example of plotting a timeseries with gnuplot and
setting the xrange? Why doesn't the following snippet work as expected?
It produces the attached.

require 'rubygems'
require 'gnuplot'
require 'date'
obs_times = Array.new
data = Array.new
24.times { |h| obs_times << DateTime.new( 2009, 1, 1, h ); data <<
rand() }
# doesn't work either
# 24.times { |h| obs_times << "2009-1-1 #{h}:00:00"; data <<
rand() }

Gnuplot.open do |gp|
Gnuplot::plot.new( gp ) do |plot|

# causes error plot.xrange
"[\"2009-01-01T00:00:00+00:00\":\"2009-01-01T23:59:00+00:00\"]"
plot.data << Gnuplot::DataSet.new( [ obs_times, data ] ) do |ds|
ds.with = "points"
ds.linewidth = 4
end
end
end

Attachments:
http://www.ruby-forum.com/attachment/3609/Picture_1.png
 
Ad

Advertisements

P

Phlip

# causes error plot.xrange
"[\"2009-01-01T00:00:00+00:00\":\"2009-01-01T23:59:00+00:00\"]"

I'm not sure where the +00:00 comes from.

This post...

http://www.oreillynet.com/ruby/blog/2008/03/cruisecontrol_charts.html

....shows how to format the time and build a range:

def timefmt; '%Y/%d/%m-%H:%M'; end

def fetch_codelines(stat, fields)
return stat.values_at(*fields).map{|values| values['codelines'] }.sum
end

def ftime(timestamp)
Time.at(timestamp).strftime(timefmt)
end
....
plot.xrange "['#{ ftime(mini) }':'#{ ftime(maxi) }']"

I admit the documentation on that technique, in both Gnuplot.rb and gnuplot,
are very scarce!
 
Ad

Advertisements

R

Rob Redmon

Phlip said:
# causes error plot.xrange
"[\"2009-01-01T00:00:00+00:00\":\"2009-01-01T23:59:00+00:00\"]"

I'm not sure where the +00:00 comes from.

That's the default format of DateTime.new.to_s
This post...

http://www.oreillynet.com/ruby/blog/2008/03/cruisecontrol_charts.html

...shows how to format the time and build a range:

def timefmt; '%Y/%d/%m-%H:%M'; end

def fetch_codelines(stat, fields)
return stat.values_at(*fields).map{|values| values['codelines'] }.sum
end

def ftime(timestamp)
Time.at(timestamp).strftime(timefmt)
end
...
plot.xrange "['#{ ftime(mini) }':'#{ ftime(maxi) }']"

I admit the documentation on that technique, in both Gnuplot.rb and
gnuplot,
are very scarce!

Thanks for the ideas. Ruby originated gnuplot examples are so scarce
that I've been looking (in vain) for another package that as lightweight
but better documented.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top