plotrobber 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -39,6 +39,15 @@ Do write this:
39
39
  }
40
40
  }
41
41
 
42
+ Even more convenient:
43
+
44
+ plot('Fit some data') {
45
+ fn = fit SOME_DATA, [1,3] # Find linear fit using columns 1 and 3.
46
+
47
+ show fn # Plots the line of best fit
48
+ candlesticks SOME_DATA # Plots candlesticks using 1:3:2:6:5
49
+ }
50
+
42
51
  ## Installation
43
52
 
44
53
  The usual:
@@ -1,3 +1,3 @@
1
1
  module Plotrobber
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/lib/plotrobber.rb CHANGED
@@ -22,6 +22,32 @@ class Gnuplot::Plot
22
22
  arbitrary_lines << s
23
23
  end
24
24
 
25
+ def store(data)
26
+ (@store ||= {})[data] ||= begin
27
+ file = Tempfile.new(['plotrobber.','.dat'])
28
+ file.write data.map{|x|x.join("\t")}.join("\n")
29
+ file.write "\n"
30
+ file.rewind
31
+
32
+ file
33
+ end
34
+ end
35
+
36
+ def source_name(what)
37
+ name = case what
38
+ when String then what
39
+ when Array then store(what).path
40
+ when Tempfile, File then what.path
41
+ else what.to_s
42
+ end
43
+
44
+ unless name.start_with?("'") or name['(']
45
+ name = "'#{name}'"
46
+ end
47
+
48
+ name
49
+ end
50
+
25
51
  def candlesticks(name, extra_opts = {})
26
52
  with_opt = case extra_opts[:with]
27
53
  when Hash, Array then 'candlesticks ' + extra_opts[:with].to_a.join(' ')
@@ -34,21 +60,24 @@ class Gnuplot::Plot
34
60
  show name, options
35
61
  end
36
62
 
37
- def show(name, *args)
38
- if Array === name
39
- file = Tempfile.new(['plotrobber.','.dat'])
40
- file.write name.map{|x|x.join("\t")}.join("\n")
41
- file.close
63
+ def fit(what, using, use_b = true)
64
+ name = source_name what
42
65
 
43
- @files ||= []
44
- @files << file
66
+ @next_fn ||= 0
67
+ @next_fn += 1
45
68
 
46
- name = file.path
47
- end
69
+ f, m, b = %w[f m b].map {|x| "#{x}#{@next_fn}" }
70
+ using_str = using.join(':')
71
+ via_str = use_b ? "#{m}, #{b}" : m
48
72
 
49
- unless name.start_with? "'"
50
- name = "'#{name}'"
51
- end
73
+ please '%s(x) = %s*x + %s' % [f, m, use_b ? b : 0]
74
+ please 'fit %s(x) %s using %s via %s' % [f, name, using_str, via_str]
75
+
76
+ "#{f}(x)"
77
+ end
78
+
79
+ def show(what, *args)
80
+ name = source_name what
52
81
 
53
82
  self.data << Gnuplot::DataSet.new(name) do |ds|
54
83
  for arg in args
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plotrobber
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-13 00:00:00.000000000 Z
12
+ date: 2013-03-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: gnuplot