charty 0.2.6 → 0.2.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/charty.gemspec +2 -1
  3. data/examples/bar_plot.rb +19 -0
  4. data/examples/box_plot.rb +17 -0
  5. data/examples/scatter_plot.rb +17 -0
  6. data/images/penguins_body_mass_g_flipper_length_mm_species_scatter_plot.png +0 -0
  7. data/images/penguins_body_mass_g_flipper_length_mm_species_sex_scatter_plot.png +0 -0
  8. data/images/penguins_species_body_mass_g_bar_plot_h.png +0 -0
  9. data/images/penguins_species_body_mass_g_bar_plot_v.png +0 -0
  10. data/images/penguins_species_body_mass_g_box_plot_h.png +0 -0
  11. data/images/penguins_species_body_mass_g_box_plot_v.png +0 -0
  12. data/images/penguins_species_body_mass_g_sex_bar_plot_v.png +0 -0
  13. data/images/penguins_species_body_mass_g_sex_box_plot_v.png +0 -0
  14. data/lib/charty.rb +2 -0
  15. data/lib/charty/backends/plotly.rb +127 -24
  16. data/lib/charty/backends/plotly_helpers/html_renderer.rb +203 -0
  17. data/lib/charty/backends/plotly_helpers/notebook_renderer.rb +89 -0
  18. data/lib/charty/backends/plotly_helpers/plotly_renderer.rb +121 -0
  19. data/lib/charty/backends/pyplot.rb +74 -0
  20. data/lib/charty/backends/unicode_plot.rb +9 -9
  21. data/lib/charty/cache_dir.rb +27 -0
  22. data/lib/charty/iruby_helper.rb +18 -0
  23. data/lib/charty/plot_methods.rb +82 -6
  24. data/lib/charty/plotters.rb +3 -0
  25. data/lib/charty/plotters/abstract_plotter.rb +56 -16
  26. data/lib/charty/plotters/bar_plotter.rb +39 -0
  27. data/lib/charty/plotters/categorical_plotter.rb +9 -1
  28. data/lib/charty/plotters/distribution_plotter.rb +180 -0
  29. data/lib/charty/plotters/histogram_plotter.rb +244 -0
  30. data/lib/charty/plotters/line_plotter.rb +38 -5
  31. data/lib/charty/plotters/scatter_plotter.rb +4 -2
  32. data/lib/charty/statistics.rb +9 -0
  33. data/lib/charty/table.rb +30 -23
  34. data/lib/charty/table_adapters/base_adapter.rb +88 -0
  35. data/lib/charty/table_adapters/daru_adapter.rb +41 -1
  36. data/lib/charty/table_adapters/hash_adapter.rb +59 -1
  37. data/lib/charty/table_adapters/pandas_adapter.rb +49 -1
  38. data/lib/charty/vector.rb +29 -1
  39. data/lib/charty/vector_adapters.rb +16 -0
  40. data/lib/charty/vector_adapters/pandas_adapter.rb +10 -1
  41. data/lib/charty/version.rb +1 -1
  42. metadata +39 -15
data/lib/charty/vector.rb CHANGED
@@ -51,6 +51,32 @@ module Charty
51
51
 
52
52
  def_delegators :adapter, :mean, :stdev
53
53
 
54
+ def_delegators :adapter, :scale, :scale_inverse
55
+
56
+ def scale(method)
57
+ case method
58
+ when :linear
59
+ self
60
+ when :log
61
+ adapter.log_scale(method)
62
+ else
63
+ raise ArgumentError,
64
+ "Invalid scaling method: %p" % method
65
+ end
66
+ end
67
+
68
+ def scale_inverse(method)
69
+ case method
70
+ when :linear
71
+ self
72
+ when :log
73
+ adapter.inverse_log_scale(method)
74
+ else
75
+ raise ArgumentError,
76
+ "Invalid scaling method: %p" % method
77
+ end
78
+ end
79
+
54
80
  # TODO: write test
55
81
  def categorical_order(order=nil)
56
82
  if order.nil?
@@ -59,7 +85,9 @@ module Charty
59
85
  order = categories
60
86
  else
61
87
  order = unique_values.compact
62
- order.sort! if numeric?
88
+ if numeric?
89
+ order.sort_by! {|x| Util.missing?(x) ? Float::INFINITY : x }
90
+ end
63
91
  end
64
92
  order.compact!
65
93
  end
@@ -99,6 +99,22 @@ module Charty
99
99
  def stdev(population: false)
100
100
  Statistics.stdev(data, population: population)
101
101
  end
102
+
103
+ def log_scale(method)
104
+ Charty::Vector.new(
105
+ self.map {|x| Math.log10(x) },
106
+ index: index,
107
+ name: name
108
+ )
109
+ end
110
+
111
+ def inverse_log_scale(method)
112
+ Charty::Vector.new(
113
+ self.map {|x| 10.0 ** x },
114
+ index: index,
115
+ name: name
116
+ )
117
+ end
102
118
  end
103
119
 
104
120
  module NameSupport
@@ -152,7 +152,8 @@ module Charty
152
152
  group_keys = grouper.unique.to_a
153
153
  groups = data.groupby(grouper)
154
154
  group_keys.map {|g|
155
- [g, Charty::Vector.new(groups.get_group(g))]
155
+ g_vals = groups.get_group(g) rescue []
156
+ [g, Charty::Vector.new(g_vals)]
156
157
  }.to_h
157
158
  when Charty::Vector
158
159
  case grouper.adapter
@@ -194,6 +195,14 @@ module Charty
194
195
  q = q.map {|x| x / 100.0 }
195
196
  data.quantile(q)
196
197
  end
198
+
199
+ def log_scale(method)
200
+ Charty::Vector.new(Numpy.log10(data))
201
+ end
202
+
203
+ def inverse_log_scale(method)
204
+ Charty::Vector.new(Numpy.power(10, data))
205
+ end
197
206
  end
198
207
  end
199
208
  end
@@ -1,5 +1,5 @@
1
1
  module Charty
2
- VERSION = "0.2.6"
2
+ VERSION = "0.2.10"
3
3
 
4
4
  module Version
5
5
  numbers, TAG = VERSION.split("-")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: charty
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - youchan
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2021-06-17 00:00:00.000000000 Z
13
+ date: 2021-08-18 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: red-colors
@@ -26,6 +26,20 @@ dependencies:
26
26
  - - ">="
27
27
  - !ruby/object:Gem::Version
28
28
  version: 0.3.0
29
+ - !ruby/object:Gem::Dependency
30
+ name: red-datasets
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: 0.1.2
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 0.1.2
29
43
  - !ruby/object:Gem::Dependency
30
44
  name: red-palette
31
45
  requirement: !ruby/object:Gem::Requirement
@@ -125,21 +139,21 @@ dependencies:
125
139
  - !ruby/object:Gem::Version
126
140
  version: '0'
127
141
  - !ruby/object:Gem::Dependency
128
- name: red-datasets
142
+ name: daru
129
143
  requirement: !ruby/object:Gem::Requirement
130
144
  requirements:
131
145
  - - ">="
132
146
  - !ruby/object:Gem::Version
133
- version: 0.1.2
147
+ version: '0'
134
148
  type: :development
135
149
  prerelease: false
136
150
  version_requirements: !ruby/object:Gem::Requirement
137
151
  requirements:
138
152
  - - ">="
139
153
  - !ruby/object:Gem::Version
140
- version: 0.1.2
154
+ version: '0'
141
155
  - !ruby/object:Gem::Dependency
142
- name: daru
156
+ name: matrix
143
157
  requirement: !ruby/object:Gem::Requirement
144
158
  requirements:
145
159
  - - ">="
@@ -153,7 +167,7 @@ dependencies:
153
167
  - !ruby/object:Gem::Version
154
168
  version: '0'
155
169
  - !ruby/object:Gem::Dependency
156
- name: matrix
170
+ name: activerecord
157
171
  requirement: !ruby/object:Gem::Requirement
158
172
  requirements:
159
173
  - - ">="
@@ -167,7 +181,7 @@ dependencies:
167
181
  - !ruby/object:Gem::Version
168
182
  version: '0'
169
183
  - !ruby/object:Gem::Dependency
170
- name: activerecord
184
+ name: sqlite3
171
185
  requirement: !ruby/object:Gem::Requirement
172
186
  requirements:
173
187
  - - ">="
@@ -181,33 +195,33 @@ dependencies:
181
195
  - !ruby/object:Gem::Version
182
196
  version: '0'
183
197
  - !ruby/object:Gem::Dependency
184
- name: sqlite3
198
+ name: iruby
185
199
  requirement: !ruby/object:Gem::Requirement
186
200
  requirements:
187
201
  - - ">="
188
202
  - !ruby/object:Gem::Version
189
- version: '0'
203
+ version: 0.7.0
190
204
  type: :development
191
205
  prerelease: false
192
206
  version_requirements: !ruby/object:Gem::Requirement
193
207
  requirements:
194
208
  - - ">="
195
209
  - !ruby/object:Gem::Version
196
- version: '0'
210
+ version: 0.7.0
197
211
  - !ruby/object:Gem::Dependency
198
- name: iruby
212
+ name: csv
199
213
  requirement: !ruby/object:Gem::Requirement
200
214
  requirements:
201
215
  - - ">="
202
216
  - !ruby/object:Gem::Version
203
- version: 0.7.0
217
+ version: '0'
204
218
  type: :development
205
219
  prerelease: false
206
220
  version_requirements: !ruby/object:Gem::Requirement
207
221
  requirements:
208
222
  - - ">="
209
223
  - !ruby/object:Gem::Version
210
- version: 0.7.0
224
+ version: '0'
211
225
  description: Visualizing your data in a simple way.
212
226
  email:
213
227
  - youchan01@gmail.com
@@ -232,6 +246,8 @@ files:
232
246
  - charty.gemspec
233
247
  - examples/Gemfile
234
248
  - examples/active_record.ipynb
249
+ - examples/bar_plot.rb
250
+ - examples/box_plot.rb
235
251
  - examples/daru.ipynb
236
252
  - examples/iris_dataset.ipynb
237
253
  - examples/nmatrix.ipynb
@@ -270,6 +286,7 @@ files:
270
286
  - examples/sample_images/subplot_pyplot.png
271
287
  - examples/sample_pyplot.ipynb
272
288
  - examples/sample_rubyplot.ipynb
289
+ - examples/scatter_plot.rb
273
290
  - images/design_concept.png
274
291
  - images/penguins_body_mass_g_flipper_length_mm_scatter_plot.png
275
292
  - images/penguins_body_mass_g_flipper_length_mm_species_scatter_plot.png
@@ -287,11 +304,16 @@ files:
287
304
  - lib/charty/backends/google_charts.rb
288
305
  - lib/charty/backends/gruff.rb
289
306
  - lib/charty/backends/plotly.rb
307
+ - lib/charty/backends/plotly_helpers/html_renderer.rb
308
+ - lib/charty/backends/plotly_helpers/notebook_renderer.rb
309
+ - lib/charty/backends/plotly_helpers/plotly_renderer.rb
290
310
  - lib/charty/backends/pyplot.rb
291
311
  - lib/charty/backends/rubyplot.rb
292
312
  - lib/charty/backends/unicode_plot.rb
313
+ - lib/charty/cache_dir.rb
293
314
  - lib/charty/dash_pattern_generator.rb
294
315
  - lib/charty/index.rb
316
+ - lib/charty/iruby_helper.rb
295
317
  - lib/charty/layout.rb
296
318
  - lib/charty/linspace.rb
297
319
  - lib/charty/plot_methods.rb
@@ -302,7 +324,9 @@ files:
302
324
  - lib/charty/plotters/box_plotter.rb
303
325
  - lib/charty/plotters/categorical_plotter.rb
304
326
  - lib/charty/plotters/count_plotter.rb
327
+ - lib/charty/plotters/distribution_plotter.rb
305
328
  - lib/charty/plotters/estimation_support.rb
329
+ - lib/charty/plotters/histogram_plotter.rb
306
330
  - lib/charty/plotters/line_plotter.rb
307
331
  - lib/charty/plotters/random_support.rb
308
332
  - lib/charty/plotters/relational_plotter.rb
@@ -348,7 +372,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
348
372
  - !ruby/object:Gem::Version
349
373
  version: '0'
350
374
  requirements: []
351
- rubygems_version: 3.2.3
375
+ rubygems_version: 3.2.23
352
376
  signing_key:
353
377
  specification_version: 4
354
378
  summary: Visualizing your data in a simple way.