charty 0.2.1 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
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.