charty 0.2.6 → 0.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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.