charty 0.2.3 → 0.2.8

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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +56 -23
  3. data/.github/workflows/nmatrix.yml +67 -0
  4. data/.github/workflows/pycall.yml +86 -0
  5. data/Gemfile +18 -0
  6. data/README.md +172 -4
  7. data/Rakefile +4 -5
  8. data/charty.gemspec +10 -6
  9. data/examples/sample_images/hist_gruff.png +0 -0
  10. data/images/penguins_body_mass_g_flipper_length_mm_scatter_plot.png +0 -0
  11. data/images/penguins_body_mass_g_flipper_length_mm_species_scatter_plot.png +0 -0
  12. data/images/penguins_body_mass_g_flipper_length_mm_species_sex_scatter_plot.png +0 -0
  13. data/images/penguins_species_body_mass_g_bar_plot_h.png +0 -0
  14. data/images/penguins_species_body_mass_g_bar_plot_v.png +0 -0
  15. data/images/penguins_species_body_mass_g_box_plot_h.png +0 -0
  16. data/images/penguins_species_body_mass_g_box_plot_v.png +0 -0
  17. data/images/penguins_species_body_mass_g_sex_bar_plot_v.png +0 -0
  18. data/images/penguins_species_body_mass_g_sex_box_plot_v.png +0 -0
  19. data/lib/charty.rb +8 -1
  20. data/lib/charty/backends/bokeh.rb +2 -2
  21. data/lib/charty/backends/google_charts.rb +1 -1
  22. data/lib/charty/backends/gruff.rb +14 -3
  23. data/lib/charty/backends/plotly.rb +731 -32
  24. data/lib/charty/backends/plotly_helpers/html_renderer.rb +203 -0
  25. data/lib/charty/backends/plotly_helpers/notebook_renderer.rb +87 -0
  26. data/lib/charty/backends/plotly_helpers/plotly_renderer.rb +121 -0
  27. data/lib/charty/backends/pyplot.rb +514 -66
  28. data/lib/charty/backends/rubyplot.rb +1 -1
  29. data/lib/charty/cache_dir.rb +27 -0
  30. data/lib/charty/dash_pattern_generator.rb +57 -0
  31. data/lib/charty/index.rb +213 -0
  32. data/lib/charty/iruby_helper.rb +18 -0
  33. data/lib/charty/linspace.rb +1 -1
  34. data/lib/charty/plot_methods.rb +283 -8
  35. data/lib/charty/plotter.rb +2 -2
  36. data/lib/charty/plotters.rb +11 -0
  37. data/lib/charty/plotters/abstract_plotter.rb +186 -16
  38. data/lib/charty/plotters/bar_plotter.rb +189 -7
  39. data/lib/charty/plotters/box_plotter.rb +64 -11
  40. data/lib/charty/plotters/categorical_plotter.rb +272 -40
  41. data/lib/charty/plotters/count_plotter.rb +7 -0
  42. data/lib/charty/plotters/distribution_plotter.rb +143 -0
  43. data/lib/charty/plotters/estimation_support.rb +84 -0
  44. data/lib/charty/plotters/histogram_plotter.rb +186 -0
  45. data/lib/charty/plotters/line_plotter.rb +300 -0
  46. data/lib/charty/plotters/random_support.rb +25 -0
  47. data/lib/charty/plotters/relational_plotter.rb +635 -0
  48. data/lib/charty/plotters/scatter_plotter.rb +80 -0
  49. data/lib/charty/plotters/vector_plotter.rb +6 -0
  50. data/lib/charty/statistics.rb +96 -2
  51. data/lib/charty/table.rb +160 -15
  52. data/lib/charty/table_adapters.rb +2 -0
  53. data/lib/charty/table_adapters/active_record_adapter.rb +17 -9
  54. data/lib/charty/table_adapters/base_adapter.rb +166 -0
  55. data/lib/charty/table_adapters/daru_adapter.rb +39 -3
  56. data/lib/charty/table_adapters/datasets_adapter.rb +13 -2
  57. data/lib/charty/table_adapters/hash_adapter.rb +141 -16
  58. data/lib/charty/table_adapters/narray_adapter.rb +25 -6
  59. data/lib/charty/table_adapters/nmatrix_adapter.rb +15 -5
  60. data/lib/charty/table_adapters/pandas_adapter.rb +163 -0
  61. data/lib/charty/util.rb +28 -0
  62. data/lib/charty/vector.rb +69 -0
  63. data/lib/charty/vector_adapters.rb +187 -0
  64. data/lib/charty/vector_adapters/array_adapter.rb +101 -0
  65. data/lib/charty/vector_adapters/daru_adapter.rb +163 -0
  66. data/lib/charty/vector_adapters/narray_adapter.rb +182 -0
  67. data/lib/charty/vector_adapters/nmatrix_adapter.rb +37 -0
  68. data/lib/charty/vector_adapters/numpy_adapter.rb +168 -0
  69. data/lib/charty/vector_adapters/pandas_adapter.rb +199 -0
  70. data/lib/charty/version.rb +1 -1
  71. metadata +92 -25
@@ -0,0 +1,168 @@
1
+ module Charty
2
+ module VectorAdapters
3
+ class NumpyAdapter < BaseAdapter
4
+ VectorAdapters.register(:numpy, self)
5
+
6
+ def self.supported?(data)
7
+ return false unless defined?(Numpy::NDArray)
8
+ case data
9
+ when Numpy::NDArray
10
+ true
11
+ else
12
+ false
13
+ end
14
+ end
15
+
16
+ def initialize(data)
17
+ @data = check_data(data)
18
+ self.index = index || RangeIndex.new(0 ... length)
19
+ end
20
+
21
+ attr_reader :data
22
+
23
+ def_delegator :data, :size, :length
24
+
25
+ def compare_data_equality(other)
26
+ case other
27
+ when NumpyAdapter, PandasSeriesAdapter
28
+ Numpy.all(data == other.data)
29
+ when BaseAdapter
30
+ Numpy.all(data == other.data.to_a)
31
+ else
32
+ false
33
+ end
34
+ end
35
+
36
+ include NameSupport
37
+ include IndexSupport
38
+
39
+ def where(mask)
40
+ mask = check_mask_vector(mask)
41
+ case mask.data
42
+ when Numpy::NDArray,
43
+ ->(x) { defined?(Pandas::Series) && x.is_a?(Pandas::Series) }
44
+ mask_data = Numpy.asarray(mask.data, dtype: :bool)
45
+ masked_data = data[mask_data]
46
+ masked_index = mask_data.nonzero()[0].to_a.map {|i| index[i] }
47
+ else
48
+ masked_data, masked_index = where_in_array(mask)
49
+ masked_data = Numpy.asarray(masked_data, dtype: data.dtype)
50
+ end
51
+ Charty::Vector.new(masked_data, index: masked_index, name: name)
52
+ end
53
+
54
+ def each
55
+ return enum_for(__method__) unless block_given?
56
+
57
+ i, n = 0, data.size
58
+ while i < n
59
+ yield data[i]
60
+ i += 1
61
+ end
62
+ end
63
+
64
+ def empty?
65
+ data.size == 0
66
+ end
67
+
68
+ def boolean?
69
+ builtins = PyCall.builtins
70
+ case
71
+ when builtins.issubclass(data.dtype.type, Numpy.bool_)
72
+ true
73
+ when builtins.issubclass(data.dtype.type, Numpy.object_)
74
+ i, n = 0, data.size
75
+ while i < n
76
+ case data[i]
77
+ when nil, true, false
78
+ # do nothing
79
+ else
80
+ return false
81
+ end
82
+ i += 1
83
+ end
84
+ true
85
+ else
86
+ false
87
+ end
88
+ end
89
+
90
+ def numeric?
91
+ # TODO: Handle object array
92
+ PyCall.builtins.issubclass(data.dtype.type, PyCall.tuple([Numpy.number, Numpy.bool_]))
93
+ end
94
+
95
+ def categorical?
96
+ false
97
+ end
98
+
99
+ def categories
100
+ nil
101
+ end
102
+
103
+ def unique_values
104
+ Numpy.unique(data).to_a
105
+ end
106
+
107
+ def group_by(grouper)
108
+ case grouper
109
+ when Numpy::NDArray,
110
+ ->(x) { defined?(Pandas::Series) && x.is_a?(Pandas::Series) }
111
+ # Nothing todo
112
+ when Charty::Vector
113
+ case grouper.data
114
+ when Numpy::NDArray
115
+ grouper = grouper.data
116
+ else
117
+ grouper = Numpy.asarray(grouper.to_a)
118
+ end
119
+ else
120
+ grouper = Numpy.asarray(Array.try_convert(grouper))
121
+ end
122
+
123
+ group_keys = Numpy.unique(grouper).to_a
124
+ group_keys.map { |g|
125
+ [g, Charty::Vector.new(data[grouper == g])]
126
+ }.to_h
127
+ end
128
+
129
+ def drop_na
130
+ where_is_na = if numeric?
131
+ Numpy.isnan(data)
132
+ else
133
+ (data == nil)
134
+ end
135
+ Charty::Vector.new(data[Numpy.logical_not(where_is_na)])
136
+ end
137
+
138
+ def eq(val)
139
+ Charty::Vector.new((data == val),
140
+ index: index,
141
+ name: name)
142
+ end
143
+
144
+ def notnull
145
+ case
146
+ when PyCall.builtins.issubclass(data.dtype.type, Numpy.object_)
147
+ i, n = 0, length
148
+ notnull_data = Numpy::NDArray.new(n, dtype: :bool)
149
+ while i < n
150
+ notnull_data[i] = ! Util.missing?(data[i])
151
+ i += 1
152
+ end
153
+ else
154
+ notnull_data = Numpy.isnan(data)
155
+ end
156
+ Charty::Vector.new(notnull_data, index: index, name: name)
157
+ end
158
+
159
+ def mean
160
+ Numpy.mean(data)
161
+ end
162
+
163
+ def stdev(population: false)
164
+ Numpy.std(data, ddof: population ? 0 : 1)
165
+ end
166
+ end
167
+ end
168
+ end
@@ -0,0 +1,199 @@
1
+ module Charty
2
+ module VectorAdapters
3
+ class PandasSeriesAdapter < BaseAdapter
4
+ VectorAdapters.register(:pandas_series, self)
5
+
6
+ def self.supported?(data)
7
+ return false unless defined?(Pandas::Series)
8
+ case data
9
+ when Pandas::Series
10
+ true
11
+ else
12
+ false
13
+ end
14
+ end
15
+
16
+ def initialize(data)
17
+ @data = check_data(data)
18
+ end
19
+
20
+ attr_reader :data
21
+
22
+ def_delegator :data, :size, :length
23
+
24
+ def index
25
+ PandasIndex.new(data.index)
26
+ end
27
+
28
+ def index=(new_index)
29
+ case new_index
30
+ when PandasIndex
31
+ data.index = new_index.values
32
+ when Index
33
+ data.index = new_index.to_a
34
+ else
35
+ data.index = new_index
36
+ end
37
+ end
38
+
39
+ def_delegators :data, :name, :name=
40
+
41
+ def compare_data_equality(other)
42
+ case other
43
+ when PandasSeriesAdapter
44
+ return data.equals(other.data)
45
+ when NumpyAdapter
46
+ other = other.data
47
+ when NArrayAdapter
48
+ case other.data
49
+ when Numo::Bit
50
+ other = other.data.to_a
51
+ other.map! {|x| [false, true][x] }
52
+ else
53
+ other = other.data.to_a
54
+ end
55
+ when BaseAdapter
56
+ other = other.data.to_a
57
+ else
58
+ return false
59
+ end
60
+
61
+ data.equals(Pandas::Series.new(other, index: data.index))
62
+ end
63
+
64
+ def [](key)
65
+ case key
66
+ when Charty::Vector
67
+ where(key)
68
+ else
69
+ data[key]
70
+ end
71
+ end
72
+
73
+ def_delegators :data, :[]=, :to_a
74
+
75
+ def each
76
+ return enum_for(__method__) unless block_given?
77
+
78
+ i, n = 0, data.size
79
+ while i < n
80
+ yield data.iloc[i]
81
+ i += 1
82
+ end
83
+ end
84
+
85
+ def empty?
86
+ data.size == 0
87
+ end
88
+
89
+ def values_at(*indices)
90
+ data.take(indices).to_a
91
+ end
92
+
93
+ def where(mask)
94
+ mask = check_mask_vector(mask)
95
+ case mask.data
96
+ when Numpy::NDArray,
97
+ ->(x) { defined?(Pandas::Series) && x.is_a?(Pandas::Series) }
98
+ mask_data = Numpy.asarray(mask.data, dtype: :bool)
99
+ masked_data = data[mask_data]
100
+ masked_index = mask_data.nonzero()[0].to_a.map {|i| index[i] }
101
+ else
102
+ masked_data, masked_index = where_in_array(mask)
103
+ masked_data = Pandas::Series.new(masked_data, dtype: data.dtype)
104
+ end
105
+ Charty::Vector.new(masked_data, index: masked_index, name: name)
106
+ end
107
+
108
+ def where_in_array(mask)
109
+ mask = check_mask_vector(mask)
110
+ masked_data = []
111
+ masked_index = []
112
+ mask.each_with_index do |f, i|
113
+ case f
114
+ when true, 1
115
+ masked_data << data.iloc[i]
116
+ masked_index << index[i]
117
+ end
118
+ end
119
+ return masked_data, masked_index
120
+ end
121
+
122
+ def boolean?
123
+ case
124
+ when Pandas.api.types.is_bool_dtype(data.dtype)
125
+ true
126
+ when Pandas.api.types.is_object_dtype(data.dtype)
127
+ data.isin([nil, false, true]).all()
128
+ else
129
+ false
130
+ end
131
+ end
132
+
133
+ def numeric?
134
+ Pandas.api.types.is_numeric_dtype(data.dtype)
135
+ end
136
+
137
+ def categorical?
138
+ Pandas.api.types.is_categorical_dtype(data.dtype)
139
+ end
140
+
141
+ def categories
142
+ data.cat.categories.to_a if categorical?
143
+ end
144
+
145
+ def unique_values
146
+ data.unique.to_a
147
+ end
148
+
149
+ def group_by(grouper)
150
+ case grouper
151
+ when Pandas::Series
152
+ group_keys = grouper.unique.to_a
153
+ groups = data.groupby(grouper)
154
+ group_keys.map {|g|
155
+ [g, Charty::Vector.new(groups.get_group(g))]
156
+ }.to_h
157
+ when Charty::Vector
158
+ case grouper.adapter
159
+ when self.class
160
+ group_by(grouper.data)
161
+ else
162
+ grouper = Pandas::Series.new(grouper.to_a)
163
+ group_by(grouper)
164
+ end
165
+ else
166
+ grouper = Pandas::Series.new(Array(grouper))
167
+ group_by(grouper)
168
+ end
169
+ end
170
+
171
+ def drop_na
172
+ Charty::Vector.new(data.dropna)
173
+ end
174
+
175
+ def eq(val)
176
+ Charty::Vector.new((data == val),
177
+ index: index,
178
+ name: name)
179
+ end
180
+
181
+ def notnull
182
+ Charty::Vector.new(data.notnull, index: index, name: name)
183
+ end
184
+
185
+ def mean
186
+ data.mean()
187
+ end
188
+
189
+ def stdev(population: false)
190
+ data.std(ddof: population ? 0 : 1)
191
+ end
192
+
193
+ def percentile(q)
194
+ q = q.map {|x| x / 100.0 }
195
+ data.quantile(q)
196
+ end
197
+ end
198
+ end
199
+ end
@@ -1,5 +1,5 @@
1
1
  module Charty
2
- VERSION = "0.2.3"
2
+ VERSION = "0.2.8"
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.3
4
+ version: 0.2.8
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: 2020-02-05 00:00:00.000000000 Z
13
+ date: 2021-06-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: red-colors
@@ -18,50 +18,78 @@ dependencies:
18
18
  requirements:
19
19
  - - ">="
20
20
  - !ruby/object:Gem::Version
21
- version: '0'
21
+ version: 0.3.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - ">="
27
27
  - !ruby/object:Gem::Version
28
- version: '0'
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
32
46
  requirements:
33
47
  - - ">="
34
48
  - !ruby/object:Gem::Version
35
- version: 0.2.0
49
+ version: 0.5.0
36
50
  type: :runtime
37
51
  prerelease: false
38
52
  version_requirements: !ruby/object:Gem::Requirement
39
53
  requirements:
40
54
  - - ">="
41
55
  - !ruby/object:Gem::Version
42
- version: 0.2.0
56
+ version: 0.5.0
43
57
  - !ruby/object:Gem::Dependency
44
- name: bundler
58
+ name: matplotlib
45
59
  requirement: !ruby/object:Gem::Requirement
46
60
  requirements:
47
61
  - - ">="
48
62
  - !ruby/object:Gem::Version
49
- version: '1.16'
50
- type: :development
63
+ version: 1.2.0
64
+ type: :runtime
51
65
  prerelease: false
52
66
  version_requirements: !ruby/object:Gem::Requirement
53
67
  requirements:
54
68
  - - ">="
55
69
  - !ruby/object:Gem::Version
56
- version: '1.16'
70
+ version: 1.2.0
57
71
  - !ruby/object:Gem::Dependency
58
- name: rake
72
+ name: pandas
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: 0.3.5
78
+ type: :runtime
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: 0.3.5
85
+ - !ruby/object:Gem::Dependency
86
+ name: playwright-ruby-client
59
87
  requirement: !ruby/object:Gem::Requirement
60
88
  requirements:
61
89
  - - ">="
62
90
  - !ruby/object:Gem::Version
63
91
  version: '0'
64
- type: :development
92
+ type: :runtime
65
93
  prerelease: false
66
94
  version_requirements: !ruby/object:Gem::Requirement
67
95
  requirements:
@@ -69,21 +97,21 @@ dependencies:
69
97
  - !ruby/object:Gem::Version
70
98
  version: '0'
71
99
  - !ruby/object:Gem::Dependency
72
- name: test-unit
100
+ name: bundler
73
101
  requirement: !ruby/object:Gem::Requirement
74
102
  requirements:
75
103
  - - ">="
76
104
  - !ruby/object:Gem::Version
77
- version: '0'
105
+ version: '1.16'
78
106
  type: :development
79
107
  prerelease: false
80
108
  version_requirements: !ruby/object:Gem::Requirement
81
109
  requirements:
82
110
  - - ">="
83
111
  - !ruby/object:Gem::Version
84
- version: '0'
112
+ version: '1.16'
85
113
  - !ruby/object:Gem::Dependency
86
- name: numo-narray
114
+ name: rake
87
115
  requirement: !ruby/object:Gem::Requirement
88
116
  requirements:
89
117
  - - ">="
@@ -97,7 +125,7 @@ dependencies:
97
125
  - !ruby/object:Gem::Version
98
126
  version: '0'
99
127
  - !ruby/object:Gem::Dependency
100
- name: nmatrix
128
+ name: test-unit
101
129
  requirement: !ruby/object:Gem::Requirement
102
130
  requirements:
103
131
  - - ">="
@@ -111,21 +139,21 @@ dependencies:
111
139
  - !ruby/object:Gem::Version
112
140
  version: '0'
113
141
  - !ruby/object:Gem::Dependency
114
- name: red-datasets
142
+ name: daru
115
143
  requirement: !ruby/object:Gem::Requirement
116
144
  requirements:
117
145
  - - ">="
118
146
  - !ruby/object:Gem::Version
119
- version: 0.0.9
147
+ version: '0'
120
148
  type: :development
121
149
  prerelease: false
122
150
  version_requirements: !ruby/object:Gem::Requirement
123
151
  requirements:
124
152
  - - ">="
125
153
  - !ruby/object:Gem::Version
126
- version: 0.0.9
154
+ version: '0'
127
155
  - !ruby/object:Gem::Dependency
128
- name: daru
156
+ name: matrix
129
157
  requirement: !ruby/object:Gem::Requirement
130
158
  requirements:
131
159
  - - ">="
@@ -167,19 +195,19 @@ dependencies:
167
195
  - !ruby/object:Gem::Version
168
196
  version: '0'
169
197
  - !ruby/object:Gem::Dependency
170
- name: matplotlib
198
+ name: iruby
171
199
  requirement: !ruby/object:Gem::Requirement
172
200
  requirements:
173
201
  - - ">="
174
202
  - !ruby/object:Gem::Version
175
- version: '0'
203
+ version: 0.7.0
176
204
  type: :development
177
205
  prerelease: false
178
206
  version_requirements: !ruby/object:Gem::Requirement
179
207
  requirements:
180
208
  - - ">="
181
209
  - !ruby/object:Gem::Version
182
- version: '0'
210
+ version: 0.7.0
183
211
  description: Visualizing your data in a simple way.
184
212
  email:
185
213
  - youchan01@gmail.com
@@ -190,6 +218,8 @@ extensions: []
190
218
  extra_rdoc_files: []
191
219
  files:
192
220
  - ".github/workflows/ci.yml"
221
+ - ".github/workflows/nmatrix.yml"
222
+ - ".github/workflows/pycall.yml"
193
223
  - ".gitignore"
194
224
  - Dockerfile.dev
195
225
  - Gemfile
@@ -230,6 +260,7 @@ files:
230
260
  - examples/sample_images/curve_with_function_pyplot.png
231
261
  - examples/sample_images/curve_with_function_rubyplot.png
232
262
  - examples/sample_images/error_bar_pyplot.png
263
+ - examples/sample_images/hist_gruff.png
233
264
  - examples/sample_images/hist_pyplot.png
234
265
  - examples/sample_images/scatter_bokeh.html
235
266
  - examples/sample_images/scatter_gruff.png
@@ -240,6 +271,15 @@ files:
240
271
  - examples/sample_pyplot.ipynb
241
272
  - examples/sample_rubyplot.ipynb
242
273
  - images/design_concept.png
274
+ - images/penguins_body_mass_g_flipper_length_mm_scatter_plot.png
275
+ - images/penguins_body_mass_g_flipper_length_mm_species_scatter_plot.png
276
+ - images/penguins_body_mass_g_flipper_length_mm_species_sex_scatter_plot.png
277
+ - images/penguins_species_body_mass_g_bar_plot_h.png
278
+ - images/penguins_species_body_mass_g_bar_plot_v.png
279
+ - images/penguins_species_body_mass_g_box_plot_h.png
280
+ - images/penguins_species_body_mass_g_box_plot_v.png
281
+ - images/penguins_species_body_mass_g_sex_bar_plot_v.png
282
+ - images/penguins_species_body_mass_g_sex_box_plot_v.png
243
283
  - lib/charty.rb
244
284
  - lib/charty/backend_methods.rb
245
285
  - lib/charty/backends.rb
@@ -247,9 +287,16 @@ files:
247
287
  - lib/charty/backends/google_charts.rb
248
288
  - lib/charty/backends/gruff.rb
249
289
  - lib/charty/backends/plotly.rb
290
+ - lib/charty/backends/plotly_helpers/html_renderer.rb
291
+ - lib/charty/backends/plotly_helpers/notebook_renderer.rb
292
+ - lib/charty/backends/plotly_helpers/plotly_renderer.rb
250
293
  - lib/charty/backends/pyplot.rb
251
294
  - lib/charty/backends/rubyplot.rb
252
295
  - lib/charty/backends/unicode_plot.rb
296
+ - lib/charty/cache_dir.rb
297
+ - lib/charty/dash_pattern_generator.rb
298
+ - lib/charty/index.rb
299
+ - lib/charty/iruby_helper.rb
253
300
  - lib/charty/layout.rb
254
301
  - lib/charty/linspace.rb
255
302
  - lib/charty/plot_methods.rb
@@ -259,15 +306,35 @@ files:
259
306
  - lib/charty/plotters/bar_plotter.rb
260
307
  - lib/charty/plotters/box_plotter.rb
261
308
  - lib/charty/plotters/categorical_plotter.rb
309
+ - lib/charty/plotters/count_plotter.rb
310
+ - lib/charty/plotters/distribution_plotter.rb
311
+ - lib/charty/plotters/estimation_support.rb
312
+ - lib/charty/plotters/histogram_plotter.rb
313
+ - lib/charty/plotters/line_plotter.rb
314
+ - lib/charty/plotters/random_support.rb
315
+ - lib/charty/plotters/relational_plotter.rb
316
+ - lib/charty/plotters/scatter_plotter.rb
317
+ - lib/charty/plotters/vector_plotter.rb
262
318
  - lib/charty/statistics.rb
263
319
  - lib/charty/table.rb
264
320
  - lib/charty/table_adapters.rb
265
321
  - lib/charty/table_adapters/active_record_adapter.rb
322
+ - lib/charty/table_adapters/base_adapter.rb
266
323
  - lib/charty/table_adapters/daru_adapter.rb
267
324
  - lib/charty/table_adapters/datasets_adapter.rb
268
325
  - lib/charty/table_adapters/hash_adapter.rb
269
326
  - lib/charty/table_adapters/narray_adapter.rb
270
327
  - lib/charty/table_adapters/nmatrix_adapter.rb
328
+ - lib/charty/table_adapters/pandas_adapter.rb
329
+ - lib/charty/util.rb
330
+ - lib/charty/vector.rb
331
+ - lib/charty/vector_adapters.rb
332
+ - lib/charty/vector_adapters/array_adapter.rb
333
+ - lib/charty/vector_adapters/daru_adapter.rb
334
+ - lib/charty/vector_adapters/narray_adapter.rb
335
+ - lib/charty/vector_adapters/nmatrix_adapter.rb
336
+ - lib/charty/vector_adapters/numpy_adapter.rb
337
+ - lib/charty/vector_adapters/pandas_adapter.rb
271
338
  - lib/charty/version.rb
272
339
  homepage: https://github.com/red-data-tools/charty
273
340
  licenses:
@@ -288,7 +355,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
288
355
  - !ruby/object:Gem::Version
289
356
  version: '0'
290
357
  requirements: []
291
- rubygems_version: 3.1.2
358
+ rubygems_version: 3.2.3
292
359
  signing_key:
293
360
  specification_version: 4
294
361
  summary: Visualizing your data in a simple way.