ruby-gr 0.0.19 → 0.0.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +16 -20
  3. data/lib/gr/plot.rb +139 -110
  4. data/lib/gr_commons/version.rb +1 -1
  5. metadata +7 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 07da9fb7d76476cb7598eac022e5a1b5e4004af6e0bdd0e87d1acd817f36abc7
4
- data.tar.gz: 87961c4df97b188a7c5fbd77a9e0ac993a6190ddc9e3fc2f9c30b2c7e88c19cb
3
+ metadata.gz: 29a78c0f4c5e3ab3afdc4245ab4dd6d9ce7d6c4f38638901a93487e366c219c6
4
+ data.tar.gz: 72f3fb64d9508c28338214583b185c041362f3e8b31a138ab9990cba4669b27a
5
5
  SHA512:
6
- metadata.gz: bb5d8869e80d488a5b2076eb80125136f27f18b4e352066ba1c5260b343440b7474ace25d708464c827954c1f02f47c682e83eff0b3e0a47d0374b58bc74ad09
7
- data.tar.gz: 677a4c8839974102a3d4ac618f41cd06b23e4c7d7d68f70110efb7f838c1689588fc00f8c462eabfe724c7fe7a639319bd83728d047901ddd9013bba3c3db029
6
+ metadata.gz: e0b0766224a375477115ff004467b4b5196689bff28846efabd31f078bd7f36d00a5f736e088f0a8333327d9eb6f8d80e398365e79d26e99f6303e2975b66c1c
7
+ data.tar.gz: 69dbc6bc3859bad4e3d67c2d2131b48c41c659e79c2f9b8b0f3250fb15cb94a3c29cc0b10c217fd1b354784ac969f2d82d9be256f59e5f0224d4d597b94ea131
data/README.md CHANGED
@@ -22,28 +22,22 @@
22
22
  ![face](https://i.imgur.com/uLCKi2r.png)
23
23
  ![shade](https://i.imgur.com/VJmS3EQ.png)
24
24
 
25
- :bar_chart: [GR framework](https://github.com/sciapp/gr) - the graphics library for visualization - for Ruby
25
+ :bar_chart: [GR framework](https://github.com/sciapp/gr) - powerful visualization library - for Ruby
26
26
 
27
27
  ## Installation
28
28
 
29
29
  GR.rb supports Ruby 2.4+.
30
30
 
31
- [Install GR](#gr-installation).
32
-
33
- Set environment variable GRDIR, if you have not already done.
31
+ First, [install GR](#gr-installation). Next, set environment variable `GRDIR`.
34
32
 
35
33
  ```sh
36
34
  export GRDIR="/your/path/to/gr"
37
35
  ```
38
36
 
39
- Add this line to your application's Gemfile:
40
-
41
37
  ```sh
42
- gem 'ruby-gr'
38
+ gem install ruby-gr
43
39
  ```
44
40
 
45
- GR3 and GR::Plot require [numo-narray](https://github.com/ruby-numo/numo-narray).
46
-
47
41
  ## Quick Start
48
42
 
49
43
  <p align="center">
@@ -81,15 +75,15 @@ GR.plot(
81
75
  )
82
76
  ```
83
77
 
84
- Save to PNG file.
78
+ Save in PNG format.
85
79
 
86
80
  ```ruby
87
81
  GR.savefig("figure.png")
88
82
  ```
89
83
 
90
- ## Features
84
+ ## API Overview
91
85
 
92
- There are two layers to the GR.rb API.
86
+ There are two different approaches to plotting with GR.rb. One way is to call Matlab-like APIs. The other is to call GR/GR3 native functions. We are planning to prepare a more object-oriented interface based on [GRUtils.jl](https://github.com/heliosdrm/GRUtils.jl) in the future.
93
87
 
94
88
  #### GR::Plot - A simple, matlab-style API.
95
89
 
@@ -126,6 +120,8 @@ List of vailable functions. See [GR.rb Wiki](https://github.com/red-data-tools/G
126
120
 
127
121
  #### GR - A module for calling native GR functions.
128
122
 
123
+ 2-D Plots and common 3-D Plots.
124
+
129
125
  ```ruby
130
126
  require 'gr'
131
127
 
@@ -136,6 +132,8 @@ GR.setwindow(0.0, 20.0, 0.0, 20.0)
136
132
 
137
133
  #### GR3 - A module for calling native GR3 functions.
138
134
 
135
+ Complex 3D scenes.
136
+
139
137
  ```ruby
140
138
  require 'gr3'
141
139
 
@@ -143,8 +141,6 @@ require 'gr3'
143
141
  GR3.cameralookat(-3, 2, -2, 0, 0, 0, 0, 0, -1)
144
142
  ```
145
143
 
146
- * GR.rb can be used in Jupyter Notebook.
147
-
148
144
  ## Documentation
149
145
 
150
146
  - [GR.rb Wiki](https://github.com/red-data-tools/GR.rb/wiki)
@@ -167,26 +163,26 @@ export GRDIR="your/path/to/gr"
167
163
 
168
164
  ### Using your package manager
169
165
 
170
- * The third party GR packages for Mac, Linux and Windows (for advanced users) are available.
171
- * If you find problems, please report to the [issue](https://github.com/red-data-tools/GR.rb/issues).
166
+ * The third party GR packages for Mac, Linux and Windows are available (for advanced users).
167
+ * If you find any problem, please report the issue [here](https://github.com/red-data-tools/GR.rb/issues).
172
168
 
173
- #### Mac: Homebrew
169
+ #### Mac - Homebrew
174
170
 
175
171
  ```sh
176
172
  brew install libgr
177
173
  ```
178
174
 
179
- Set environment variable GRDIR.
175
+ Set environment variable `GRDIR`.
180
176
 
181
177
  ```sh
182
178
  export GRDIR=$(brew --prefix libgr)
183
179
  ```
184
180
 
185
- #### Linux: APT Yum
181
+ #### Linux - APT Yum
186
182
 
187
183
  [packages.red-data-tools.org](https://github.com/red-data-tools/packages.red-data-tools.org) provides `libgr-dev` and `libgr3-dev`.
188
184
 
189
- #### Windows: MSYS2
185
+ #### Windows - MSYS2
190
186
 
191
187
  If you are using Rubyinstaller, pacman will automatically install [mingw-w64-gr](https://packages.msys2.org/base/mingw-w64-gr) when the gem is installed.
192
188
 
@@ -38,59 +38,58 @@ module GR
38
38
 
39
39
  # Keyword options conform to GR.jl.
40
40
  KW_ARGS = %i[accelerate algorithm alpha ax backgroundcolor barwidth baseline
41
- clabels clear clim color colormap crange figsize horizontal
41
+ clabels clear clim color colormap crange figsize grid horizontal
42
42
  isovalue kind label labels levels location nbins ratio rotation
43
43
  scale size spec subplot tilt title update xaxis xflip xform
44
- xlabel xlim xlog xrange yaxis yflip ylabel ylim ylog zflip
45
- yrange viewport vp where window zaxis zlabel zlim zlog zrange].freeze
44
+ xlabel xlim xlog xrange xticks yaxis yflip ylabel ylim ylog
45
+ zflip yrange yticks viewport vp where window zaxis zlabel zlim
46
+ zlog zrange zticks].freeze
46
47
 
47
48
  @last_plot = nil
48
49
  class << self
49
50
  attr_accessor :last_plot
50
51
  end
51
52
 
52
- def initialize(*args)
53
- @kvs = if args[-1].is_a? Hash
54
- args.pop
55
- else
56
- {}
57
- end
53
+ attr_accessor :args, :kvs, :scheme
54
+
55
+ def initialize(*raw_args)
56
+ @kvs = raw_args.last.is_a?(Hash) ? raw_args.pop : {}
57
+ @args = plot_args(raw_args) # method name is the same as Julia/Python
58
+
58
59
  # Check keyword options.
59
- @kvs.each_key do |k|
60
- warn "Unknown keyword: #{k}" unless KW_ARGS.include? k
61
- end
60
+ kvs.each_key { |k| warn "Unknown keyword: #{k}" unless KW_ARGS.include? k }
62
61
 
63
62
  # label(singular form) is a original keyword arg which GR.jl does not have.
64
- @kvs[:labels] = [@kvs[:label]] if @kvs[:label] && @kvs[:labels].nil?
65
-
66
- @args = plot_args(args) # method name is the same as Julia/Python
67
- @kvs[:size] ||= [600, 450]
68
- @kvs[:ax] = false if @kvs[:ax].nil?
69
- @kvs[:subplot] ||= [0, 1, 0, 1]
70
- @kvs[:clear] = true if @kvs[:clear].nil?
71
- @kvs[:update] = true if @kvs[:update].nil?
72
- @scheme = 0
63
+ kvs[:labels] ||= [kvs[:label]] if kvs.has_key? :label
64
+
65
+ # Don't use || because we need to tell `false` from `nil`
66
+ kvs[:size] = [600, 450] unless kvs.has_key? :size
67
+ kvs[:ax] = false unless kvs.has_key? :ax
68
+ kvs[:subplot] = [0, 1, 0, 1] unless kvs.has_key? :subplot
69
+ kvs[:clear] = true unless kvs.has_key? :clear
70
+ kvs[:update] = true unless kvs.has_key? :update
71
+
72
+ @scheme = 0
73
73
  @background = 0xffffff
74
- @handle = nil
74
+ # @handle = nil # This variable will be used in gr_meta
75
+
75
76
  self.class.last_plot = self
76
77
  end
77
- attr_accessor :args, :kvs, :scheme
78
78
 
79
79
  def set_viewport(kind, subplot)
80
80
  mwidth, mheight, width, height = GR.inqdspsize
81
- if kvs[:figsize]
82
- w = 0.0254 * width * kvs[:figsize][0] / mwidth
83
- h = 0.0254 * height * kvs[:figsize][1] / mheight
84
- else
85
- dpi = width / mwidth * 0.0254
86
- if dpi > 200
87
- w, h = kvs[:size].map { |x| x * dpi / 100 }
88
- else
89
- w, h = kvs[:size]
90
- end
91
- end
92
- viewport = [0, 0, 0, 0]
81
+ dpi = width / mwidth * 0.0254
82
+ w, h = if kvs[:figsize]
83
+ [(0.0254 * width * kvs[:figsize][0] / mwidth),
84
+ (0.0254 * height * kvs[:figsize][1] / mheight)]
85
+ elsif dpi > 200
86
+ kvs[:size].map { |i| i * dpi / 100 }
87
+ else
88
+ kvs[:size]
89
+ end
90
+
93
91
  vp = subplot.clone
92
+
94
93
  if w > h
95
94
  ratio = h / w.to_f
96
95
  msize = mwidth * w / width
@@ -106,6 +105,7 @@ module GR
106
105
  vp[0] *= ratio
107
106
  vp[1] *= ratio
108
107
  end
108
+
109
109
  if %i[wireframe surface plot3 scatter3 trisurf volume].include?(kind)
110
110
  extent = [vp[1] - vp[0], vp[3] - vp[2]].min
111
111
  vp1 = 0.5 * (vp[0] + vp[1] - extent)
@@ -115,10 +115,12 @@ module GR
115
115
  else
116
116
  vp1, vp2, vp3, vp4 = vp
117
117
  end
118
- viewport[0] = vp1 + 0.125 * (vp2 - vp1)
119
- viewport[1] = vp1 + 0.925 * (vp2 - vp1)
120
- viewport[2] = vp3 + 0.125 * (vp4 - vp3)
121
- viewport[3] = vp3 + 0.925 * (vp4 - vp3)
118
+
119
+ viewport = [vp1 + 0.125 * (vp2 - vp1),
120
+ vp1 + 0.925 * (vp2 - vp1),
121
+ vp3 + 0.125 * (vp4 - vp3),
122
+ vp3 + 0.925 * (vp4 - vp3)]
123
+
122
124
  if %i[contour contourf hexbin heatmap nonuniformheatmap polarheatmap
123
125
  surface trisurf volume].include?(kind)
124
126
  viewport[1] -= 0.1
@@ -132,11 +134,11 @@ module GR
132
134
  end
133
135
  end
134
136
 
135
- GR.setviewport(viewport[0], viewport[1], viewport[2], viewport[3])
137
+ GR.setviewport(*viewport)
136
138
 
137
139
  kvs[:viewport] = viewport
138
- kvs[:vp] = vp
139
- kvs[:ratio] = ratio
140
+ kvs[:vp] = vp
141
+ kvs[:ratio] = ratio
140
142
 
141
143
  if kvs[:backgroundcolor]
142
144
  GR.savestate
@@ -166,14 +168,15 @@ module GR
166
168
  def set_window(kind)
167
169
  scale = 0
168
170
  unless %i[polar polarhist polarheatmap].include?(kind)
169
- scale |= GR::OPTION_X_LOG if kvs[:xlog]
170
- scale |= GR::OPTION_Y_LOG if kvs[:ylog]
171
- scale |= GR::OPTION_Z_LOG if kvs[:zlog]
171
+ scale |= GR::OPTION_X_LOG if kvs[:xlog]
172
+ scale |= GR::OPTION_Y_LOG if kvs[:ylog]
173
+ scale |= GR::OPTION_Z_LOG if kvs[:zlog]
172
174
  scale |= GR::OPTION_FLIP_X if kvs[:xflip]
173
175
  scale |= GR::OPTION_FLIP_Y if kvs[:yflip]
174
176
  scale |= GR::OPTION_FLIP_Z if kvs[:zflip]
175
177
  end
176
178
  kvs[:scale] = scale
179
+
177
180
  if kvs.has_key?(:panzoom)
178
181
  xmin, xmax, ymin, ymax = GR.panzoom(*kvs[:panzoom])
179
182
  kvs[:xrange] = [xmin, xmax]
@@ -185,65 +188,74 @@ module GR
185
188
  major_count = %i[wireframe surface plot3 scatter3 polar polarhist
186
189
  polarheatmap trisurf volume].include?(kind) ? 2 : 5
187
190
 
191
+ kvs[:xticks] = [kvs[:xticks], major_count] if kvs[:xticks].is_a? Numeric
192
+ kvs[:yticks] = [kvs[:yticks], major_count] if kvs[:yticks].is_a? Numeric
193
+ kvs[:zticks] = [kvs[:zticks], major_count] if kvs[:zticks].is_a? Numeric
194
+
188
195
  xmin, xmax = kvs[:xrange]
189
- if (scale & GR::OPTION_X_LOG) == 0
190
- xmin, xmax = GR.adjustlimits(xmin, xmax) unless kvs.has_key?(:xlim) || kvs.has_key?(:panzoom)
191
- if kvs.has_key?(:xticks)
192
- xtick, majorx = kvs[:xticks]
193
- else
194
- majorx = major_count
195
- xtick = GR.tick(xmin, xmax) / majorx
196
- end
197
- else
198
- xtick = majorx = 1
196
+ if %i[heatmap polarheatmap].include?(kind) && kvs.has_key?(:xlim)
197
+ xmin -= 0.5
198
+ xmax += 0.5
199
199
  end
200
- xorg = if (scale & GR::OPTION_FLIP_X) == 0
201
- [xmin, xmax]
202
- else
203
- [xmax, xmin]
204
- end
200
+ xtick, majorx = if (scale & GR::OPTION_X_LOG) == 0
201
+ unless %i[heatmap polarheatmap].include?(kind)
202
+ unless kvs.has_key?(:xlim)
203
+ xmin, xmax = GR.adjustlimits(xmin, xmax) unless kvs[:panzoom]
204
+ end
205
+ end
206
+ if kvs.has_key?(:xticks)
207
+ kvs[:xticks]
208
+ else
209
+ [GR.tick(xmin, xmax) / major_count, major_count]
210
+ end
211
+ else
212
+ [1, 1]
213
+ end
214
+ xorg = (scale & GR::OPTION_FLIP_X) == 0 ? [xmin, xmax] : [xmax, xmin]
205
215
  kvs[:xaxis] = xtick, xorg, majorx
206
216
 
207
217
  ymin, ymax = kvs[:yrange]
208
- if kind == :hist && !kvs.has_key?(:ylim)
209
- ymin = (scale & GR::OPTION_Y_LOG) == 0 ? 0 : 1
218
+ if %i[heatmap polarheatmap].include?(kind) && kvs.has_key?(:ylim)
219
+ ymin -= 0.5
220
+ ymax += 0.5
210
221
  end
211
- if (scale & GR::OPTION_Y_LOG) == 0
212
- ymin, ymax = GR.adjustlimits(ymin, ymax) unless kvs.has_key?(:ylim) || kvs.has_key?(:panzoom)
213
- if kvs.has_key?(:yticks)
214
- ytick, majory = kvs[:yticks]
215
- else
216
- majory = major_count
217
- ytick = GR.tick(ymin, ymax) / majory
222
+ if kind == :hist
223
+ if kvs[:horizontal] && !kvs.has_key?(:xlim)
224
+ xmin = (scale & GR::OPTION_X_LOG) == 0 ? 0 : 1
225
+ elsif !kvs.has_key?(:ylim)
226
+ ymin = (scale & GR::OPTION_Y_LOG) == 0 ? 0 : 1
218
227
  end
219
- else
220
- ytick = majory = 1
221
228
  end
222
- yorg = if (scale & GR::OPTION_FLIP_Y) == 0
223
- [ymin, ymax]
224
- else
225
- [ymax, ymin]
226
- end
229
+ ytick, majory = if (scale & GR::OPTION_Y_LOG) == 0
230
+ unless %i[heatmap polarheatmap].include?(kind)
231
+ unless kvs.has_key?(:ylim)
232
+ ymin, ymax = GR.adjustlimits(ymin, ymax) unless kvs[:panzoom]
233
+ end
234
+ end
235
+ if kvs.has_key?(:yticks)
236
+ kvs[:yticks]
237
+ else
238
+ [GR.tick(ymin, ymax) / major_count, major_count]
239
+ end
240
+ else
241
+ [1, 1]
242
+ end
243
+ yorg = (scale & GR::OPTION_FLIP_Y) == 0 ? [ymin, ymax] : [ymax, ymin]
227
244
  kvs[:yaxis] = ytick, yorg, majory
228
245
 
229
246
  if %i[wireframe surface plot3 scatter3 trisurf volume].include?(kind)
230
247
  zmin, zmax = kvs[:zrange]
231
- if (scale & GR::OPTION_Z_LOG) == 0
232
- zmin, zmax = GR.adjustlimits(zmin, zmax) if kvs.has_key?(:zlim)
233
- if kvs.has_key?(:zticks)
234
- ztick, majorz = kvs[:zticks]
235
- else
236
- majorz = major_count
237
- ztick = GR.tick(zmin, zmax) / majorz
238
- end
239
- else
240
- ztick = majorz = 1
241
- end
242
- zorg = if (scale & GR::OPTION_FLIP_Z) == 0
243
- [zmin, zmax]
244
- else
245
- [zmax, zmin]
246
- end
248
+ ztick, majorz = if (scale & GR::OPTION_Z_LOG) == 0
249
+ zmin, zmax = GR.adjustlimits(zmin, zmax) if kvs.has_key?(:zlim)
250
+ if kvs.has_key?(:zticks)
251
+ kvs[:zticks]
252
+ else
253
+ [GR.tick(zmin, zmax) / major_count, major_count]
254
+ end
255
+ else
256
+ [1, 1]
257
+ end
258
+ zorg = (scale & GR::OPTION_FLIP_Z) == 0 ? [zmin, zmax] : [zmax, zmin]
247
259
  kvs[:zaxis] = ztick, zorg, majorz
248
260
  end
249
261
 
@@ -255,7 +267,7 @@ module GR
255
267
  end
256
268
  if %i[wireframe surface plot3 scatter3 trisurf volume].include?(kind)
257
269
  rotation = kvs[:rotation] || 40
258
- tilt = kvs[:tilt] || 70
270
+ tilt = kvs[:tilt] || 70
259
271
  GR.setspace(zmin, zmax, rotation, tilt)
260
272
  end
261
273
 
@@ -655,14 +667,26 @@ module GR
655
667
  GR.polymarker(x, y)
656
668
 
657
669
  when :hist
658
- ymin = kvs[:window][2]
659
- y.length.times do |i|
660
- GR.setfillcolorind(989)
661
- GR.setfillintstyle(GR::INTSTYLE_SOLID)
662
- GR.fillrect(x[i], x[i + 1], ymin, y[i])
663
- GR.setfillcolorind(1)
664
- GR.setfillintstyle(GR::INTSTYLE_HOLLOW)
665
- GR.fillrect(x[i], x[i + 1], ymin, y[i])
670
+ if kvs[:horizontal]
671
+ xmin = kvs[:window][0]
672
+ x.length.times do |i|
673
+ GR.setfillcolorind(989)
674
+ GR.setfillintstyle(GR::INTSTYLE_SOLID)
675
+ GR.fillrect(xmin, x[i], y[i], y[i + 1])
676
+ GR.setfillcolorind(1)
677
+ GR.setfillintstyle(GR::INTSTYLE_HOLLOW)
678
+ GR.fillrect(xmin, x[i], y[i], y[i + 1])
679
+ end
680
+ else
681
+ ymin = kvs[:window][2]
682
+ y.length.times do |i|
683
+ GR.setfillcolorind(989)
684
+ GR.setfillintstyle(GR::INTSTYLE_SOLID)
685
+ GR.fillrect(x[i], x[i + 1], ymin, y[i])
686
+ GR.setfillcolorind(1)
687
+ GR.setfillintstyle(GR::INTSTYLE_HOLLOW)
688
+ GR.fillrect(x[i], x[i + 1], ymin, y[i])
689
+ end
666
690
  end
667
691
 
668
692
  when :polarhist
@@ -1057,7 +1081,8 @@ module GR
1057
1081
  args.each do |x, y, z, c|
1058
1082
  if x
1059
1083
  if scale & GR::OPTION_X_LOG != 0
1060
- x.map! { |v| v > 0 ? v : Float::NAN }
1084
+ # duck typing for NArray
1085
+ x = x.map { |v| v > 0 ? v : Float::NAN }
1061
1086
  end
1062
1087
  x0, x1 = x.minmax
1063
1088
  xmin = [x0, xmin].min
@@ -1068,7 +1093,7 @@ module GR
1068
1093
  end
1069
1094
  if y
1070
1095
  if scale & GR::OPTION_Y_LOG != 0
1071
- y.map! { |v| v > 0 ? v : Float::NAN }
1096
+ y = y.map { |v| v > 0 ? v : Float::NAN }
1072
1097
  end
1073
1098
  y0, y1 = y.minmax
1074
1099
  ymin = [y0, ymin].min
@@ -1079,7 +1104,7 @@ module GR
1079
1104
  end
1080
1105
  if z
1081
1106
  if scale & GR::OPTION_Z_LOG != 0
1082
- z.map! { |v| v > 0 ? v : Float::NAN }
1107
+ z = z.map { |v| v > 0 ? v : Float::NAN }
1083
1108
  end
1084
1109
  z0, z1 = z.minmax
1085
1110
  zmin = [z0, zmin].min
@@ -1293,11 +1318,15 @@ module GR
1293
1318
  end
1294
1319
 
1295
1320
  # (Plot) Draw a histogram.
1296
- def histogram(x, kv = {})
1297
- create_plot(:hist, x, kv) do |plt|
1321
+ def histogram(series, kv = {})
1322
+ create_plot(:hist, series, kv) do |plt|
1298
1323
  nbins = plt.kvs[:nbins] || 0
1299
- x, y = hist(x, nbins)
1300
- plt.args = [[x, y, nil, nil, '']]
1324
+ x, y = hist(series, nbins)
1325
+ plt.args = if kv[:horizontal]
1326
+ [[y, x, nil, nil, '']]
1327
+ else
1328
+ [[x, y, nil, nil, '']]
1329
+ end
1301
1330
  end
1302
1331
  end
1303
1332
 
@@ -1323,7 +1352,7 @@ module GR
1323
1352
  end
1324
1353
 
1325
1354
  # Set current subplot index.
1326
- def subplot(nr, nc, p)
1355
+ def subplot(nr, nc, p, kv = {})
1327
1356
  xmin = 1
1328
1357
  xmax = 0
1329
1358
  ymin = 1
@@ -1342,7 +1371,7 @@ module GR
1342
1371
  # The policy of clearing when p[0]==1 is controversial
1343
1372
  clear: p[0] == 1,
1344
1373
  update: p[-1] == nr * nc
1345
- }
1374
+ }.merge kv
1346
1375
  end
1347
1376
 
1348
1377
  # (Plot) Save the current figure to a file.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GRCommons
4
- VERSION = '0.0.19'
4
+ VERSION = '0.0.20'
5
5
  end
metadata CHANGED
@@ -1,23 +1,23 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-gr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.19
4
+ version: 0.0.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - kojix2
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-06-17 00:00:00.000000000 Z
11
+ date: 2020-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: histogram
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
- type: :development
20
+ type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
@@ -25,13 +25,13 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: histogram
28
+ name: numo-narray
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
- type: :development
34
+ type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: numo-narray
42
+ name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="