bplot 0.0.2.3 → 0.0.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/Roadmap +8 -0
  2. data/lib/bplot.rb +27 -11
  3. metadata +1 -1
data/Roadmap CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  == Version 0.0.3
4
4
 
5
+ * Add a "debug" mode "b = BPlot.new(:debug)" where we do not create a
6
+ Gnuplot instance and every command returns a text string. This makes
7
+ it possible to add a test suite for BPlot.
8
+
9
+ * Add a test suite. Use the Tutorial as an inspiration, but make it more
10
+ thorough and try to test only one feature at a time (though it is also
11
+ important to test every feature combination at least once).
12
+
5
13
  * X and Y error bars.
6
14
 
7
15
  * Variable, data-dependent point size.
data/lib/bplot.rb CHANGED
@@ -53,7 +53,7 @@ class BPlot
53
53
  #
54
54
  # Every instance of BPlot has its own gnuplot process.
55
55
  #
56
- @pipe = IO.popen("gnuplot","w")
56
+ @pipe = IO.popen("gnuplot -p","w")
57
57
 
58
58
  #
59
59
  # Configure Gnuplot.
@@ -172,15 +172,19 @@ class BPlot
172
172
  # method is currently in a state of flux and is for the moment undocumented.
173
173
  def plot(*args)
174
174
 
175
- data = []
175
+ all_data = []
176
176
  all_plots = ''
177
177
  while args.length > 0
178
178
  #
179
179
  # NEXT PLOT
180
180
  #
181
- # First two values are the (x,y) points.
182
- data << args.shift
183
- data << args.shift
181
+ # Anything that is of class Array or NMatrix is data.
182
+ this_data = []
183
+ while args[0].class == 'Array' or args[0].class == 'NMatrix'
184
+ this_data << args.shift
185
+ end
186
+
187
+ all_data << this_data
184
188
 
185
189
  # - Get the settings for this plot.
186
190
  # - If 'args' is not empty, there is another plot.
@@ -197,16 +201,28 @@ class BPlot
197
201
  #
198
202
  # Each plot needs a separate stream of data separated by 'e' ("end").
199
203
  #
200
- nstreams = data.length / 2
204
+ nblocks = all_data.length
201
205
 
202
- stream = (1..nstreams).map { |s|
203
- x = data.shift
204
- y = data.shift
205
- n = x.is_a?(Array) ? x.length - 1 : x.shape[0] - 1
206
+ stream = (1..nblocks).map { |s|
206
207
 
207
- (0..n).map { |i| "#{x[i]} #{y[i]}\n" }.join + "e\n"
208
+ ncols = all_data[s].length
209
+ nrows = all_data[s][0].class == 'Array' ? all_data[s][0].length
210
+ : all_data[s][0].shape[0] - 1
211
+
212
+ (0..nrows).map { |r|
213
+ (0..ncols).map { |c| " " + all_data[s][c][r]
214
+ }.join + "\n"
215
+ }.join + "e\n"
208
216
  }.join
209
217
 
218
+ # stream = (1..nstreams).map { |s|
219
+ # x = data.shift
220
+ # y = data.shift
221
+ # n = x.is_a?(Array) ? x.length - 1 : x.shape[0] - 1
222
+ #
223
+ # (0..n).map { |i| "#{x[i]} #{y[i]}\n" }.join + "e\n"
224
+ # }.join
225
+
210
226
  @pipe.puts "plot #{all_plots} \n#{stream}"
211
227
  end
212
228
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bplot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2.3
4
+ version: 0.0.2.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: