charty 0.2.1 → 0.2.7

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 (76) 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/Dockerfile.dev +9 -1
  6. data/Gemfile +18 -0
  7. data/README.md +177 -9
  8. data/Rakefile +4 -5
  9. data/charty.gemspec +10 -5
  10. data/examples/palette.rb +1 -1
  11. data/examples/sample_images/hist_gruff.png +0 -0
  12. data/images/penguins_body_mass_g_flipper_length_mm_scatter_plot.png +0 -0
  13. data/images/penguins_body_mass_g_flipper_length_mm_species_scatter_plot.png +0 -0
  14. data/images/penguins_body_mass_g_flipper_length_mm_species_sex_scatter_plot.png +0 -0
  15. data/images/penguins_species_body_mass_g_bar_plot_h.png +0 -0
  16. data/images/penguins_species_body_mass_g_bar_plot_v.png +0 -0
  17. data/images/penguins_species_body_mass_g_box_plot_h.png +0 -0
  18. data/images/penguins_species_body_mass_g_box_plot_v.png +0 -0
  19. data/images/penguins_species_body_mass_g_sex_bar_plot_v.png +0 -0
  20. data/images/penguins_species_body_mass_g_sex_box_plot_v.png +0 -0
  21. data/lib/charty.rb +9 -2
  22. data/lib/charty/backends.rb +1 -0
  23. data/lib/charty/backends/bokeh.rb +2 -2
  24. data/lib/charty/backends/google_charts.rb +1 -1
  25. data/lib/charty/backends/gruff.rb +14 -3
  26. data/lib/charty/backends/plotly.rb +731 -32
  27. data/lib/charty/backends/plotly_helpers/html_renderer.rb +203 -0
  28. data/lib/charty/backends/plotly_helpers/notebook_renderer.rb +86 -0
  29. data/lib/charty/backends/plotly_helpers/plotly_renderer.rb +121 -0
  30. data/lib/charty/backends/pyplot.rb +515 -67
  31. data/lib/charty/backends/rubyplot.rb +1 -1
  32. data/lib/charty/backends/unicode_plot.rb +79 -0
  33. data/lib/charty/cache_dir.rb +27 -0
  34. data/lib/charty/dash_pattern_generator.rb +57 -0
  35. data/lib/charty/index.rb +213 -0
  36. data/lib/charty/iruby_helper.rb +18 -0
  37. data/lib/charty/linspace.rb +1 -1
  38. data/lib/charty/plot_methods.rb +283 -8
  39. data/lib/charty/plotter.rb +2 -2
  40. data/lib/charty/plotters.rb +11 -0
  41. data/lib/charty/plotters/abstract_plotter.rb +188 -18
  42. data/lib/charty/plotters/bar_plotter.rb +189 -7
  43. data/lib/charty/plotters/box_plotter.rb +64 -11
  44. data/lib/charty/plotters/categorical_plotter.rb +272 -40
  45. data/lib/charty/plotters/count_plotter.rb +7 -0
  46. data/lib/charty/plotters/distribution_plotter.rb +143 -0
  47. data/lib/charty/plotters/estimation_support.rb +84 -0
  48. data/lib/charty/plotters/histogram_plotter.rb +182 -0
  49. data/lib/charty/plotters/line_plotter.rb +300 -0
  50. data/lib/charty/plotters/random_support.rb +25 -0
  51. data/lib/charty/plotters/relational_plotter.rb +635 -0
  52. data/lib/charty/plotters/scatter_plotter.rb +80 -0
  53. data/lib/charty/plotters/vector_plotter.rb +6 -0
  54. data/lib/charty/statistics.rb +96 -2
  55. data/lib/charty/table.rb +160 -15
  56. data/lib/charty/table_adapters.rb +2 -0
  57. data/lib/charty/table_adapters/active_record_adapter.rb +17 -9
  58. data/lib/charty/table_adapters/base_adapter.rb +166 -0
  59. data/lib/charty/table_adapters/daru_adapter.rb +39 -3
  60. data/lib/charty/table_adapters/datasets_adapter.rb +13 -2
  61. data/lib/charty/table_adapters/hash_adapter.rb +141 -16
  62. data/lib/charty/table_adapters/narray_adapter.rb +25 -6
  63. data/lib/charty/table_adapters/nmatrix_adapter.rb +15 -5
  64. data/lib/charty/table_adapters/pandas_adapter.rb +163 -0
  65. data/lib/charty/util.rb +28 -0
  66. data/lib/charty/vector.rb +69 -0
  67. data/lib/charty/vector_adapters.rb +187 -0
  68. data/lib/charty/vector_adapters/array_adapter.rb +101 -0
  69. data/lib/charty/vector_adapters/daru_adapter.rb +163 -0
  70. data/lib/charty/vector_adapters/narray_adapter.rb +182 -0
  71. data/lib/charty/vector_adapters/nmatrix_adapter.rb +37 -0
  72. data/lib/charty/vector_adapters/numpy_adapter.rb +168 -0
  73. data/lib/charty/vector_adapters/pandas_adapter.rb +199 -0
  74. data/lib/charty/version.rb +1 -1
  75. metadata +105 -24
  76. data/lib/charty/palette.rb +0 -235
@@ -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.1"
2
+ VERSION = "0.2.7"
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.1
4
+ version: 0.2.7
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-01-09 00:00:00.000000000 Z
13
+ date: 2021-06-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: red-colors
@@ -18,36 +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
29
  - !ruby/object:Gem::Dependency
30
- name: bundler
30
+ name: red-datasets
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - ">="
34
34
  - !ruby/object:Gem::Version
35
- version: '1.16'
36
- type: :development
35
+ version: 0.1.2
36
+ type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: '1.16'
42
+ version: 0.1.2
43
43
  - !ruby/object:Gem::Dependency
44
- name: rake
44
+ name: red-palette
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 0.5.0
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 0.5.0
57
+ - !ruby/object:Gem::Dependency
58
+ name: matplotlib
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: 1.2.0
64
+ type: :runtime
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: 1.2.0
71
+ - !ruby/object:Gem::Dependency
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
45
87
  requirement: !ruby/object:Gem::Requirement
46
88
  requirements:
47
89
  - - ">="
48
90
  - !ruby/object:Gem::Version
49
91
  version: '0'
50
- type: :development
92
+ type: :runtime
51
93
  prerelease: false
52
94
  version_requirements: !ruby/object:Gem::Requirement
53
95
  requirements:
@@ -55,21 +97,21 @@ dependencies:
55
97
  - !ruby/object:Gem::Version
56
98
  version: '0'
57
99
  - !ruby/object:Gem::Dependency
58
- name: test-unit
100
+ name: bundler
59
101
  requirement: !ruby/object:Gem::Requirement
60
102
  requirements:
61
103
  - - ">="
62
104
  - !ruby/object:Gem::Version
63
- version: '0'
105
+ version: '1.16'
64
106
  type: :development
65
107
  prerelease: false
66
108
  version_requirements: !ruby/object:Gem::Requirement
67
109
  requirements:
68
110
  - - ">="
69
111
  - !ruby/object:Gem::Version
70
- version: '0'
112
+ version: '1.16'
71
113
  - !ruby/object:Gem::Dependency
72
- name: numo-narray
114
+ name: rake
73
115
  requirement: !ruby/object:Gem::Requirement
74
116
  requirements:
75
117
  - - ">="
@@ -83,7 +125,7 @@ dependencies:
83
125
  - !ruby/object:Gem::Version
84
126
  version: '0'
85
127
  - !ruby/object:Gem::Dependency
86
- name: nmatrix
128
+ name: test-unit
87
129
  requirement: !ruby/object:Gem::Requirement
88
130
  requirements:
89
131
  - - ">="
@@ -97,21 +139,21 @@ dependencies:
97
139
  - !ruby/object:Gem::Version
98
140
  version: '0'
99
141
  - !ruby/object:Gem::Dependency
100
- name: red-datasets
142
+ name: daru
101
143
  requirement: !ruby/object:Gem::Requirement
102
144
  requirements:
103
145
  - - ">="
104
146
  - !ruby/object:Gem::Version
105
- version: 0.0.9
147
+ version: '0'
106
148
  type: :development
107
149
  prerelease: false
108
150
  version_requirements: !ruby/object:Gem::Requirement
109
151
  requirements:
110
152
  - - ">="
111
153
  - !ruby/object:Gem::Version
112
- version: 0.0.9
154
+ version: '0'
113
155
  - !ruby/object:Gem::Dependency
114
- name: daru
156
+ name: matrix
115
157
  requirement: !ruby/object:Gem::Requirement
116
158
  requirements:
117
159
  - - ">="
@@ -153,19 +195,19 @@ dependencies:
153
195
  - !ruby/object:Gem::Version
154
196
  version: '0'
155
197
  - !ruby/object:Gem::Dependency
156
- name: matplotlib
198
+ name: iruby
157
199
  requirement: !ruby/object:Gem::Requirement
158
200
  requirements:
159
201
  - - ">="
160
202
  - !ruby/object:Gem::Version
161
- version: '0'
203
+ version: 0.7.0
162
204
  type: :development
163
205
  prerelease: false
164
206
  version_requirements: !ruby/object:Gem::Requirement
165
207
  requirements:
166
208
  - - ">="
167
209
  - !ruby/object:Gem::Version
168
- version: '0'
210
+ version: 0.7.0
169
211
  description: Visualizing your data in a simple way.
170
212
  email:
171
213
  - youchan01@gmail.com
@@ -176,6 +218,8 @@ extensions: []
176
218
  extra_rdoc_files: []
177
219
  files:
178
220
  - ".github/workflows/ci.yml"
221
+ - ".github/workflows/nmatrix.yml"
222
+ - ".github/workflows/pycall.yml"
179
223
  - ".gitignore"
180
224
  - Dockerfile.dev
181
225
  - Gemfile
@@ -216,6 +260,7 @@ files:
216
260
  - examples/sample_images/curve_with_function_pyplot.png
217
261
  - examples/sample_images/curve_with_function_rubyplot.png
218
262
  - examples/sample_images/error_bar_pyplot.png
263
+ - examples/sample_images/hist_gruff.png
219
264
  - examples/sample_images/hist_pyplot.png
220
265
  - examples/sample_images/scatter_bokeh.html
221
266
  - examples/sample_images/scatter_gruff.png
@@ -226,6 +271,15 @@ files:
226
271
  - examples/sample_pyplot.ipynb
227
272
  - examples/sample_rubyplot.ipynb
228
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
229
283
  - lib/charty.rb
230
284
  - lib/charty/backend_methods.rb
231
285
  - lib/charty/backends.rb
@@ -233,11 +287,18 @@ files:
233
287
  - lib/charty/backends/google_charts.rb
234
288
  - lib/charty/backends/gruff.rb
235
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
236
293
  - lib/charty/backends/pyplot.rb
237
294
  - lib/charty/backends/rubyplot.rb
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
238
300
  - lib/charty/layout.rb
239
301
  - lib/charty/linspace.rb
240
- - lib/charty/palette.rb
241
302
  - lib/charty/plot_methods.rb
242
303
  - lib/charty/plotter.rb
243
304
  - lib/charty/plotters.rb
@@ -245,15 +306,35 @@ files:
245
306
  - lib/charty/plotters/bar_plotter.rb
246
307
  - lib/charty/plotters/box_plotter.rb
247
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
248
318
  - lib/charty/statistics.rb
249
319
  - lib/charty/table.rb
250
320
  - lib/charty/table_adapters.rb
251
321
  - lib/charty/table_adapters/active_record_adapter.rb
322
+ - lib/charty/table_adapters/base_adapter.rb
252
323
  - lib/charty/table_adapters/daru_adapter.rb
253
324
  - lib/charty/table_adapters/datasets_adapter.rb
254
325
  - lib/charty/table_adapters/hash_adapter.rb
255
326
  - lib/charty/table_adapters/narray_adapter.rb
256
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
257
338
  - lib/charty/version.rb
258
339
  homepage: https://github.com/red-data-tools/charty
259
340
  licenses:
@@ -274,7 +355,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
274
355
  - !ruby/object:Gem::Version
275
356
  version: '0'
276
357
  requirements: []
277
- rubygems_version: 3.0.3
358
+ rubygems_version: 3.2.3
278
359
  signing_key:
279
360
  specification_version: 4
280
361
  summary: Visualizing your data in a simple way.