daru 0.1.5 → 0.3
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.
- checksums.yaml +5 -5
- data/.github/ISSUE_TEMPLATE.md +18 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +21 -7
- data/.travis.yml +10 -5
- data/CONTRIBUTING.md +15 -10
- data/History.md +124 -2
- data/README.md +37 -9
- data/ReleasePolicy.md +20 -0
- data/benchmarks/db_loading.rb +34 -0
- data/benchmarks/statistics.rb +6 -6
- data/benchmarks/where_clause.rb +1 -1
- data/benchmarks/where_vs_filter.rb +1 -1
- data/daru.gemspec +17 -41
- data/lib/daru.rb +10 -13
- data/lib/daru/accessors/gsl_wrapper.rb +1 -1
- data/lib/daru/accessors/nmatrix_wrapper.rb +2 -0
- data/lib/daru/category.rb +29 -15
- data/lib/daru/configuration.rb +34 -0
- data/lib/daru/core/group_by.rb +158 -77
- data/lib/daru/core/merge.rb +12 -3
- data/lib/daru/core/query.rb +20 -4
- data/lib/daru/dataframe.rb +692 -118
- data/lib/daru/date_time/index.rb +14 -11
- data/lib/daru/date_time/offsets.rb +9 -1
- data/lib/daru/extensions/which_dsl.rb +55 -0
- data/lib/daru/formatters/table.rb +3 -5
- data/lib/daru/index/categorical_index.rb +4 -4
- data/lib/daru/index/index.rb +131 -42
- data/lib/daru/index/multi_index.rb +118 -10
- data/lib/daru/io/csv/converters.rb +21 -0
- data/lib/daru/io/io.rb +105 -33
- data/lib/daru/io/sql_data_source.rb +10 -0
- data/lib/daru/iruby/templates/dataframe.html.erb +4 -51
- data/lib/daru/iruby/templates/dataframe_mi.html.erb +3 -56
- data/lib/daru/iruby/templates/dataframe_mi_tbody.html.erb +35 -0
- data/lib/daru/iruby/templates/dataframe_mi_thead.html.erb +21 -0
- data/lib/daru/iruby/templates/dataframe_tbody.html.erb +28 -0
- data/lib/daru/iruby/templates/dataframe_thead.html.erb +21 -0
- data/lib/daru/iruby/templates/vector.html.erb +3 -25
- data/lib/daru/iruby/templates/vector_mi.html.erb +3 -34
- data/lib/daru/iruby/templates/vector_mi_tbody.html.erb +26 -0
- data/lib/daru/iruby/templates/vector_mi_thead.html.erb +8 -0
- data/lib/daru/iruby/templates/vector_tbody.html.erb +17 -0
- data/lib/daru/iruby/templates/vector_thead.html.erb +8 -0
- data/lib/daru/maths/arithmetic/vector.rb +38 -2
- data/lib/daru/maths/statistics/dataframe.rb +28 -30
- data/lib/daru/maths/statistics/vector.rb +295 -41
- data/lib/daru/plotting/gruff/dataframe.rb +13 -15
- data/lib/daru/plotting/nyaplot/category.rb +1 -1
- data/lib/daru/plotting/nyaplot/dataframe.rb +15 -4
- data/lib/daru/plotting/nyaplot/vector.rb +1 -2
- data/lib/daru/vector.rb +308 -96
- data/lib/daru/version.rb +1 -1
- data/profile/vector_new.rb +9 -0
- data/spec/accessors/gsl_wrapper_spec.rb +38 -35
- data/spec/accessors/nmatrix_wrapper_spec.rb +25 -22
- data/spec/category_spec.rb +24 -20
- data/spec/core/group_by_spec.rb +238 -4
- data/spec/core/merge_spec.rb +1 -1
- data/spec/core/query_spec.rb +65 -50
- data/spec/daru_spec.rb +22 -0
- data/spec/dataframe_spec.rb +473 -16
- data/spec/date_time/date_time_index_helper_spec.rb +72 -0
- data/spec/date_time/index_spec.rb +34 -16
- data/spec/date_time/offsets_spec.rb +14 -0
- data/spec/extensions/rserve_spec.rb +1 -1
- data/spec/extensions/which_dsl_spec.rb +38 -0
- data/spec/fixtures/boolean_converter_test.csv +5 -0
- data/spec/fixtures/duplicates.csv +32 -0
- data/spec/fixtures/eciresults.html +394 -0
- data/spec/fixtures/empty_rows_test.csv +17 -0
- data/spec/fixtures/macau.html +3691 -0
- data/spec/fixtures/macd_data.csv +150 -0
- data/spec/fixtures/matrix_test.csv +55 -55
- data/spec/fixtures/moneycontrol.html +6812 -0
- data/spec/fixtures/string_converter_test.csv +5 -0
- data/spec/fixtures/test_xls.xls +0 -0
- data/spec/fixtures/test_xls_2.xls +0 -0
- data/spec/fixtures/url_test.txt~ +0 -0
- data/spec/fixtures/valid_markup.html +62 -0
- data/spec/fixtures/wiki_climate.html +1243 -0
- data/spec/fixtures/wiki_table_info.html +631 -0
- data/spec/formatters/table_formatter_spec.rb +29 -0
- data/spec/index/categorical_index_spec.rb +33 -33
- data/spec/index/index_spec.rb +160 -41
- data/spec/index/multi_index_spec.rb +143 -33
- data/spec/io/io_spec.rb +246 -2
- data/spec/io/sql_data_source_spec.rb +31 -41
- data/spec/iruby/dataframe_spec.rb +17 -19
- data/spec/iruby/vector_spec.rb +26 -28
- data/spec/maths/arithmetic/dataframe_spec.rb +1 -1
- data/spec/maths/arithmetic/vector_spec.rb +18 -0
- data/spec/maths/statistics/vector_spec.rb +153 -15
- data/spec/plotting/gruff/category_spec.rb +3 -3
- data/spec/plotting/gruff/dataframe_spec.rb +14 -4
- data/spec/plotting/gruff/vector_spec.rb +9 -9
- data/spec/plotting/nyaplot/category_spec.rb +5 -9
- data/spec/plotting/nyaplot/dataframe_spec.rb +95 -47
- data/spec/plotting/nyaplot/vector_spec.rb +5 -11
- data/spec/shared/vector_display_spec.rb +12 -14
- data/spec/spec_helper.rb +30 -7
- data/spec/support/matchers.rb +5 -0
- data/spec/vector_spec.rb +306 -72
- metadata +96 -55
- data/spec/fixtures/stock_data.csv +0 -500
|
@@ -10,7 +10,7 @@ describe Daru::Vector, 'plotting category vector with gruff' do
|
|
|
10
10
|
expect(plot).to receive :data
|
|
11
11
|
dv.plot type: :bar
|
|
12
12
|
end
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
it 'plots bar graph with block' do
|
|
15
15
|
expect(plot).to receive :labels=
|
|
16
16
|
expect(plot).to receive :data
|
|
@@ -18,7 +18,7 @@ describe Daru::Vector, 'plotting category vector with gruff' do
|
|
|
18
18
|
dv.plot(type: :bar) { |p| p.title = 'hello' }
|
|
19
19
|
end
|
|
20
20
|
end
|
|
21
|
-
|
|
21
|
+
|
|
22
22
|
context 'pie' do
|
|
23
23
|
let(:plot) { instance_double 'Gruff::Pie' }
|
|
24
24
|
before { allow(Gruff::Pie).to receive(:new).and_return(plot) }
|
|
@@ -27,7 +27,7 @@ describe Daru::Vector, 'plotting category vector with gruff' do
|
|
|
27
27
|
dv.plot type: :pie
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
|
-
|
|
30
|
+
|
|
31
31
|
context 'sidebar' do
|
|
32
32
|
let(:plot) { instance_double 'Gruff::SideBar' }
|
|
33
33
|
before { allow(Gruff::SideBar).to receive(:new).and_return(plot) }
|
|
@@ -18,7 +18,7 @@ describe Daru::DataFrame, 'plotting dataframe using gruff' do
|
|
|
18
18
|
expect(plot).to receive(:data).exactly(3).times
|
|
19
19
|
df.plot type: :bar
|
|
20
20
|
end
|
|
21
|
-
|
|
21
|
+
|
|
22
22
|
it 'plots bar graph with block' do
|
|
23
23
|
expect(plot).to receive :labels=
|
|
24
24
|
expect(plot).to receive(:data).exactly(3).times
|
|
@@ -56,7 +56,7 @@ describe Daru::DataFrame, 'plotting dataframe using gruff' do
|
|
|
56
56
|
df.plot type: :scatter, x: :c, y: :a
|
|
57
57
|
end
|
|
58
58
|
end
|
|
59
|
-
|
|
59
|
+
|
|
60
60
|
context 'invalid type' do
|
|
61
61
|
it { expect { df.plot type: :lol }.to raise_error ArgumentError }
|
|
62
62
|
end
|
|
@@ -72,13 +72,23 @@ describe Daru::DataFrame, 'dataframe category plotting with gruff' do
|
|
|
72
72
|
}, index: 'a'..'f')
|
|
73
73
|
end
|
|
74
74
|
before { df.to_category :c }
|
|
75
|
-
|
|
75
|
+
|
|
76
76
|
context 'scatter' do
|
|
77
77
|
let(:plot) { instance_double 'Gruff::Scatter' }
|
|
78
|
-
before { allow(Gruff::Scatter).to receive(:new).and_return(plot) }
|
|
78
|
+
before { allow(Gruff::Scatter).to receive(:new).and_return(plot) }
|
|
79
79
|
it 'plots scatter plot categorized by category vector' do
|
|
80
80
|
expect(plot).to receive(:data).exactly(2).times
|
|
81
81
|
df.plot type: :scatter, x: :a, y: :b, categorized: { by: :c }
|
|
82
82
|
end
|
|
83
|
+
|
|
84
|
+
it 'plots with axes description' do
|
|
85
|
+
expect(plot).to receive(:data).exactly(2).times
|
|
86
|
+
expect(plot).to receive(:x_axis_label=).exactly(1).times
|
|
87
|
+
expect(plot).to receive(:y_axis_label=).exactly(1).times
|
|
88
|
+
df.plot type: :scatter, x: :a, y: :b, categorized: { by: :c } do |gruff_plot|
|
|
89
|
+
gruff_plot.x_axis_label = 'A data'
|
|
90
|
+
gruff_plot.y_axis_label = 'B data'
|
|
91
|
+
end
|
|
92
|
+
end
|
|
83
93
|
end
|
|
84
94
|
end
|
|
@@ -7,13 +7,13 @@ describe Daru::Vector, 'plotting vector with gruff' do
|
|
|
7
7
|
context 'line' do
|
|
8
8
|
let(:plot) { instance_double 'Gruff::Line' }
|
|
9
9
|
before { allow(Gruff::Line).to receive(:new).and_return(plot) }
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
it 'plots line graph without block' do
|
|
12
12
|
expect(plot).to receive(:labels=)
|
|
13
13
|
expect(plot).to receive(:data)
|
|
14
14
|
dv.plot type: :line
|
|
15
15
|
end
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
it 'plots line graph with block' do
|
|
18
18
|
expect(plot).to receive :labels=
|
|
19
19
|
expect(plot).to receive :data
|
|
@@ -21,28 +21,28 @@ describe Daru::Vector, 'plotting vector with gruff' do
|
|
|
21
21
|
dv.plot(type: :line) { |p| p.title = 'hello' }
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
|
-
|
|
24
|
+
|
|
25
25
|
context 'bar' do
|
|
26
26
|
let(:plot) { instance_double 'Gruff::Bar' }
|
|
27
27
|
before { allow(Gruff::Bar).to receive(:new).and_return(plot) }
|
|
28
|
-
|
|
28
|
+
|
|
29
29
|
it 'plots bar graph' do
|
|
30
30
|
expect(plot).to receive :labels=
|
|
31
31
|
expect(plot).to receive :data
|
|
32
32
|
dv.plot type: :bar
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
|
-
|
|
35
|
+
|
|
36
36
|
context 'pie' do
|
|
37
37
|
let(:plot) { instance_double 'Gruff::Pie' }
|
|
38
38
|
before { allow(Gruff::Pie).to receive(:new).and_return(plot) }
|
|
39
|
-
|
|
39
|
+
|
|
40
40
|
it 'plots pie graph' do
|
|
41
41
|
expect(plot).to receive(:data).exactly(3).times
|
|
42
42
|
dv.plot type: :pie
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
|
-
|
|
45
|
+
|
|
46
46
|
context 'scatter' do
|
|
47
47
|
let(:plot) { instance_double 'Gruff::Scatter' }
|
|
48
48
|
before { allow(Gruff::Scatter).to receive(:new).and_return(plot) }
|
|
@@ -52,7 +52,7 @@ describe Daru::Vector, 'plotting vector with gruff' do
|
|
|
52
52
|
dv.plot type: :scatter
|
|
53
53
|
end
|
|
54
54
|
end
|
|
55
|
-
|
|
55
|
+
|
|
56
56
|
context 'sidebar' do
|
|
57
57
|
let(:plot) { instance_double 'Gruff::SideBar' }
|
|
58
58
|
before { allow(Gruff::SideBar).to receive(:new).and_return(plot) }
|
|
@@ -63,7 +63,7 @@ describe Daru::Vector, 'plotting vector with gruff' do
|
|
|
63
63
|
dv.plot type: :sidebar
|
|
64
64
|
end
|
|
65
65
|
end
|
|
66
|
-
|
|
66
|
+
|
|
67
67
|
context 'invalid type' do
|
|
68
68
|
it { expect { dv.plot type: :lol }.to raise_error ArgumentError }
|
|
69
69
|
end
|
|
@@ -7,7 +7,7 @@ describe Daru::Vector, 'plotting category' do
|
|
|
7
7
|
Daru::Vector.new ['III']*10 + ['II']*5 + ['I']*5,
|
|
8
8
|
type: :category,
|
|
9
9
|
categories: ['I', 'II', 'III']
|
|
10
|
-
end
|
|
10
|
+
end
|
|
11
11
|
before do
|
|
12
12
|
Daru.plotting_library = :nyaplot
|
|
13
13
|
allow(Nyaplot::Plot).to receive(:new).and_return(plot)
|
|
@@ -17,7 +17,6 @@ describe Daru::Vector, 'plotting category' do
|
|
|
17
17
|
expect(plot).to receive(:add).with(:bar, ['I', 'II', 'III'], [5, 5, 10])
|
|
18
18
|
expect(plot).to receive :x_label
|
|
19
19
|
expect(plot).to receive :y_label
|
|
20
|
-
expect(plot).to receive(:show)
|
|
21
20
|
dv.plot(type: :bar) do |p|
|
|
22
21
|
p.x_label 'Categories'
|
|
23
22
|
p.y_label 'Frequency'
|
|
@@ -26,23 +25,20 @@ describe Daru::Vector, 'plotting category' do
|
|
|
26
25
|
|
|
27
26
|
it 'plots bar graph without taking a block' do
|
|
28
27
|
expect(plot).to receive(:add).with(:bar, ["I", "II", "III"], [5, 5, 10])
|
|
29
|
-
expect(plot).to
|
|
30
|
-
dv.plot(type: :bar)
|
|
28
|
+
expect(dv.plot(type: :bar)).to eq plot
|
|
31
29
|
end
|
|
32
30
|
|
|
33
31
|
it 'plots bar graph with percentage' do
|
|
34
32
|
expect(plot).to receive(:add).with(:bar, ["I", "II", "III"], [25, 25, 50])
|
|
35
33
|
expect(plot).to receive(:yrange).with [0, 100]
|
|
36
|
-
expect(plot).to
|
|
37
|
-
dv.plot(type: :bar, method: :percentage)
|
|
34
|
+
expect(dv.plot(type: :bar, method: :percentage)).to eq plot
|
|
38
35
|
end
|
|
39
36
|
|
|
40
37
|
it 'plots bar graph with fraction' do
|
|
41
38
|
expect(plot).to receive(:add).with(:bar, ["I", "II", "III"], [0.25, 0.25, 0.50])
|
|
42
39
|
expect(plot).to receive(:yrange).with [0, 1]
|
|
43
|
-
expect(plot).to
|
|
44
|
-
|
|
45
|
-
end
|
|
40
|
+
expect(dv.plot(type: :bar, method: :fraction)).to eq plot
|
|
41
|
+
end
|
|
46
42
|
end
|
|
47
43
|
|
|
48
44
|
context 'other type' do
|
|
@@ -21,6 +21,16 @@ describe Daru::DataFrame, 'plotting' do
|
|
|
21
21
|
index: [:one, :two, :three, :four]
|
|
22
22
|
)
|
|
23
23
|
}
|
|
24
|
+
|
|
25
|
+
let(:df_with_index_as_default) {
|
|
26
|
+
Nyaplot::DataFrame.new [
|
|
27
|
+
{:x=>1, :y1=>5, :y2=>-3, :cat=>:a, :_index=>:one},
|
|
28
|
+
{:x=>2, :y1=>7, :y2=>-7, :cat=>:b, :_index=>:two},
|
|
29
|
+
{:x=>3, :y1=>9, :y2=>-11, :cat=>:c, :_index=>:three},
|
|
30
|
+
{:x=>4, :y1=>11, :y2=>-15, :cat=>:d, :_index=>:four}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
|
|
24
34
|
let(:plot) { instance_double('Nyaplot::Plot') }
|
|
25
35
|
let(:diagram) { instance_double('Nyaplot::Diagram') }
|
|
26
36
|
|
|
@@ -35,8 +45,7 @@ describe Daru::DataFrame, 'plotting' do
|
|
|
35
45
|
.with(numerics.to_nyaplotdf, :box, :x, :y1, :y2)
|
|
36
46
|
.ordered
|
|
37
47
|
|
|
38
|
-
expect(plot).to
|
|
39
|
-
data_frame.plot(type: :box)
|
|
48
|
+
expect(data_frame.plot(type: :box)).to eq plot
|
|
40
49
|
end
|
|
41
50
|
end
|
|
42
51
|
|
|
@@ -47,8 +56,7 @@ describe Daru::DataFrame, 'plotting' do
|
|
|
47
56
|
.with(data_frame.to_nyaplotdf, :scatter, :x, :y1)
|
|
48
57
|
.ordered
|
|
49
58
|
|
|
50
|
-
expect(plot).to
|
|
51
|
-
data_frame.plot(type: :scatter, x: :x, y: :y1)
|
|
59
|
+
expect(data_frame.plot(type: :scatter, x: :x, y: :y1)).to eq plot
|
|
52
60
|
end
|
|
53
61
|
|
|
54
62
|
it 'works without :y provided' do
|
|
@@ -56,8 +64,20 @@ describe Daru::DataFrame, 'plotting' do
|
|
|
56
64
|
.with(data_frame.to_nyaplotdf, :scatter, :x)
|
|
57
65
|
.ordered
|
|
58
66
|
|
|
59
|
-
expect(plot).to
|
|
60
|
-
|
|
67
|
+
expect(data_frame.plot(type: :scatter, x: :x)).to eq plot
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
context 'default x axis' do
|
|
72
|
+
it 'sets the x axis as the index value if not defined' do
|
|
73
|
+
expect(plot).to receive(:add_with_df)
|
|
74
|
+
.with(df_with_index_as_default, :line, :_index, :y1)
|
|
75
|
+
.ordered
|
|
76
|
+
|
|
77
|
+
expect(
|
|
78
|
+
data_frame.plot(
|
|
79
|
+
type: :line, y: :y1)
|
|
80
|
+
).to eq plot
|
|
61
81
|
end
|
|
62
82
|
end
|
|
63
83
|
|
|
@@ -69,9 +89,10 @@ describe Daru::DataFrame, 'plotting' do
|
|
|
69
89
|
expect(plot).to receive(:add_with_df)
|
|
70
90
|
.with(data_frame.to_nyaplotdf, :scatter, :x, :y2)
|
|
71
91
|
.ordered
|
|
72
|
-
expect(plot).to receive(:show).ordered
|
|
73
92
|
|
|
74
|
-
|
|
93
|
+
expect(
|
|
94
|
+
data_frame.plot(type: :scatter, x: [:x, :x], y: [:y1, :y2])
|
|
95
|
+
).to eq plot
|
|
75
96
|
end
|
|
76
97
|
|
|
77
98
|
it 'works with multiple types provided' do
|
|
@@ -81,9 +102,11 @@ describe Daru::DataFrame, 'plotting' do
|
|
|
81
102
|
expect(plot).to receive(:add_with_df)
|
|
82
103
|
.with(data_frame.to_nyaplotdf, :line, :x, :y2)
|
|
83
104
|
.ordered
|
|
84
|
-
expect(plot).to receive(:show).ordered
|
|
85
105
|
|
|
86
|
-
|
|
106
|
+
expect(
|
|
107
|
+
data_frame.plot(
|
|
108
|
+
type: [:scatter, :line], x: [:x, :x], y: [:y1, :y2])
|
|
109
|
+
).to eq plot
|
|
87
110
|
end
|
|
88
111
|
|
|
89
112
|
it 'works with numeric var names' do
|
|
@@ -93,9 +116,9 @@ describe Daru::DataFrame, 'plotting' do
|
|
|
93
116
|
expect(plot).to receive(:add_with_df)
|
|
94
117
|
.with(data_frame.to_nyaplotdf, :line, :x, :y2)
|
|
95
118
|
.ordered
|
|
96
|
-
expect(plot).to receive(:show).ordered
|
|
97
119
|
|
|
98
|
-
|
|
120
|
+
expect(
|
|
121
|
+
data_frame.plot(
|
|
99
122
|
type: [:scatter, :line],
|
|
100
123
|
# FIXME: this didn't work due to default type: :scatter opts
|
|
101
124
|
#type1: :scatter,
|
|
@@ -104,7 +127,8 @@ describe Daru::DataFrame, 'plotting' do
|
|
|
104
127
|
x2: :x,
|
|
105
128
|
y1: :y1,
|
|
106
129
|
y2: :y2
|
|
107
|
-
|
|
130
|
+
)
|
|
131
|
+
).to eq plot
|
|
108
132
|
end
|
|
109
133
|
end
|
|
110
134
|
end
|
|
@@ -121,13 +145,13 @@ describe Daru::DataFrame, 'category plotting' do
|
|
|
121
145
|
end
|
|
122
146
|
let(:plot) { instance_double('Nyaplot::Plot') }
|
|
123
147
|
let(:diagram) { instance_double('Nyaplot::Diagram::Scatter') }
|
|
124
|
-
|
|
148
|
+
|
|
125
149
|
before do
|
|
126
150
|
df.to_category :c
|
|
127
151
|
allow(Nyaplot::Plot).to receive(:new).and_return(plot)
|
|
128
152
|
allow(plot).to receive(:add_with_df).and_return(diagram)
|
|
129
153
|
end
|
|
130
|
-
|
|
154
|
+
|
|
131
155
|
it 'plots scatter plot categoried by color with a block' do
|
|
132
156
|
expect(plot).to receive :add_with_df
|
|
133
157
|
expect(diagram).to receive(:title).exactly(3).times
|
|
@@ -136,7 +160,6 @@ describe Daru::DataFrame, 'category plotting' do
|
|
|
136
160
|
expect(plot).to receive :legend
|
|
137
161
|
expect(plot).to receive :xrange
|
|
138
162
|
expect(plot).to receive :yrange
|
|
139
|
-
expect(plot).to receive :show
|
|
140
163
|
df.plot(type: :scatter, x: :a, y: :b, categorized: {by: :c, method: :color}) do |p, d|
|
|
141
164
|
p.xrange [-10, 10]
|
|
142
165
|
p.yrange [-10, 10]
|
|
@@ -149,9 +172,11 @@ describe Daru::DataFrame, 'category plotting' do
|
|
|
149
172
|
expect(diagram).to receive(:color).exactly(3).times
|
|
150
173
|
expect(diagram).to receive(:tooltip_contents).exactly(3).times
|
|
151
174
|
expect(plot).to receive :legend
|
|
152
|
-
expect(
|
|
153
|
-
|
|
154
|
-
|
|
175
|
+
expect(
|
|
176
|
+
df.plot(
|
|
177
|
+
type: :scatter, x: :a, y: :b,
|
|
178
|
+
categorized: {by: :c, method: :color})
|
|
179
|
+
).to eq plot
|
|
155
180
|
end
|
|
156
181
|
|
|
157
182
|
it 'plots scatter plot categoried by custom colors' do
|
|
@@ -162,9 +187,8 @@ describe Daru::DataFrame, 'category plotting' do
|
|
|
162
187
|
expect(diagram).to receive(:color).with :green
|
|
163
188
|
expect(diagram).to receive(:tooltip_contents).exactly(3).times
|
|
164
189
|
expect(plot).to receive :legend
|
|
165
|
-
expect(plot
|
|
166
|
-
|
|
167
|
-
categorized: {by: :c, method: :color, color: [:red, :blue, :green]})
|
|
190
|
+
expect(df.plot(type: :scatter, x: :a, y: :b,
|
|
191
|
+
categorized: {by: :c, method: :color, color: [:red, :blue, :green]})).to eq plot
|
|
168
192
|
end
|
|
169
193
|
|
|
170
194
|
it 'plots scatter plot categoried by shape' do
|
|
@@ -173,9 +197,8 @@ describe Daru::DataFrame, 'category plotting' do
|
|
|
173
197
|
expect(diagram).to receive(:shape).exactly(3).times
|
|
174
198
|
expect(diagram).to receive(:tooltip_contents).exactly(3).times
|
|
175
199
|
expect(plot).to receive :legend
|
|
176
|
-
expect(plot
|
|
177
|
-
|
|
178
|
-
categorized: {by: :c, method: :shape})
|
|
200
|
+
expect(df.plot(type: :scatter, x: :a, y: :b,
|
|
201
|
+
categorized: {by: :c, method: :shape})).to eq plot
|
|
179
202
|
end
|
|
180
203
|
|
|
181
204
|
it 'plots scatter plot categoried by custom shapes' do
|
|
@@ -186,9 +209,13 @@ describe Daru::DataFrame, 'category plotting' do
|
|
|
186
209
|
expect(diagram).to receive(:shape).with 'diamond'
|
|
187
210
|
expect(diagram).to receive(:tooltip_contents).exactly(3).times
|
|
188
211
|
expect(plot).to receive :legend
|
|
189
|
-
expect(
|
|
190
|
-
|
|
191
|
-
|
|
212
|
+
expect(
|
|
213
|
+
df.plot(
|
|
214
|
+
type: :scatter, x: :a, y: :b,
|
|
215
|
+
categorized: {
|
|
216
|
+
by: :c, method: :shape,
|
|
217
|
+
shape: %w(circle triangle-up diamond)})
|
|
218
|
+
).to eq plot
|
|
192
219
|
end
|
|
193
220
|
|
|
194
221
|
it 'plots scatter plot categoried by size' do
|
|
@@ -197,9 +224,8 @@ describe Daru::DataFrame, 'category plotting' do
|
|
|
197
224
|
expect(diagram).to receive(:size).exactly(3).times
|
|
198
225
|
expect(diagram).to receive(:tooltip_contents).exactly(3).times
|
|
199
226
|
expect(plot).to receive :legend
|
|
200
|
-
expect(plot
|
|
201
|
-
|
|
202
|
-
categorized: {by: :c, method: :size})
|
|
227
|
+
expect(df.plot(type: :scatter, x: :a, y: :b,
|
|
228
|
+
categorized: {by: :c, method: :size})).to eq plot
|
|
203
229
|
end
|
|
204
230
|
|
|
205
231
|
it 'plots scatter plot categoried by cusom sizes' do
|
|
@@ -210,9 +236,17 @@ describe Daru::DataFrame, 'category plotting' do
|
|
|
210
236
|
expect(diagram).to receive(:size).with 300
|
|
211
237
|
expect(diagram).to receive(:tooltip_contents).exactly(3).times
|
|
212
238
|
expect(plot).to receive :legend
|
|
213
|
-
expect(
|
|
214
|
-
|
|
215
|
-
|
|
239
|
+
expect(
|
|
240
|
+
df.plot(
|
|
241
|
+
type: :scatter,
|
|
242
|
+
x: :a, y: :b,
|
|
243
|
+
categorized: {
|
|
244
|
+
by: :c,
|
|
245
|
+
method: :size,
|
|
246
|
+
size: [100, 200, 300]
|
|
247
|
+
}
|
|
248
|
+
)
|
|
249
|
+
).to eq plot
|
|
216
250
|
end
|
|
217
251
|
end
|
|
218
252
|
|
|
@@ -226,13 +260,13 @@ describe Daru::DataFrame, 'category plotting' do
|
|
|
226
260
|
end
|
|
227
261
|
let(:plot) { instance_double('Nyaplot::Plot') }
|
|
228
262
|
let(:diagram) { instance_double('Nyaplot::Diagram::Scatter') }
|
|
229
|
-
|
|
263
|
+
|
|
230
264
|
before do
|
|
231
265
|
df.to_category :c
|
|
232
266
|
allow(Nyaplot::Plot).to receive(:new).and_return(plot)
|
|
233
267
|
allow(plot).to receive(:add_with_df).and_return(diagram)
|
|
234
268
|
end
|
|
235
|
-
|
|
269
|
+
|
|
236
270
|
it 'plots line plot categoried by color with a block' do
|
|
237
271
|
expect(plot).to receive :add_with_df
|
|
238
272
|
expect(diagram).to receive(:title).exactly(3).times
|
|
@@ -240,7 +274,6 @@ describe Daru::DataFrame, 'category plotting' do
|
|
|
240
274
|
expect(plot).to receive :legend
|
|
241
275
|
expect(plot).to receive :xrange
|
|
242
276
|
expect(plot).to receive :yrange
|
|
243
|
-
expect(plot).to receive :show
|
|
244
277
|
df.plot(type: :line, x: :a, y: :b, categorized: {by: :c, method: :color}) do |p, d|
|
|
245
278
|
p.xrange [-10, 10]
|
|
246
279
|
p.yrange [-10, 10]
|
|
@@ -252,8 +285,12 @@ describe Daru::DataFrame, 'category plotting' do
|
|
|
252
285
|
expect(diagram).to receive(:title).exactly(3).times
|
|
253
286
|
expect(diagram).to receive(:color).exactly(3).times
|
|
254
287
|
expect(plot).to receive :legend
|
|
255
|
-
expect(
|
|
256
|
-
|
|
288
|
+
expect(
|
|
289
|
+
df.plot(
|
|
290
|
+
type: :line, x: :a, y: :b,
|
|
291
|
+
categorized: {by: :c, method: :color}
|
|
292
|
+
)
|
|
293
|
+
).to eq plot
|
|
257
294
|
end
|
|
258
295
|
|
|
259
296
|
it 'plots line plot categoried by custom colors' do
|
|
@@ -263,9 +300,12 @@ describe Daru::DataFrame, 'category plotting' do
|
|
|
263
300
|
expect(diagram).to receive(:color).with :blue
|
|
264
301
|
expect(diagram).to receive(:color).with :green
|
|
265
302
|
expect(plot).to receive :legend
|
|
266
|
-
expect(
|
|
267
|
-
|
|
268
|
-
|
|
303
|
+
expect(
|
|
304
|
+
df.plot(
|
|
305
|
+
type: :line, x: :a, y: :b,
|
|
306
|
+
categorized: {by: :c, method: :color, color: [:red, :blue, :green]}
|
|
307
|
+
)
|
|
308
|
+
).to eq plot
|
|
269
309
|
end
|
|
270
310
|
|
|
271
311
|
it 'plots line plot categoried by stroke width' do
|
|
@@ -273,8 +313,12 @@ describe Daru::DataFrame, 'category plotting' do
|
|
|
273
313
|
expect(diagram).to receive(:title).exactly(3).times
|
|
274
314
|
expect(diagram).to receive(:stroke_width).exactly(3).times
|
|
275
315
|
expect(plot).to receive :legend
|
|
276
|
-
expect(
|
|
277
|
-
|
|
316
|
+
expect(
|
|
317
|
+
df.plot(
|
|
318
|
+
type: :line, x: :a, y: :b,
|
|
319
|
+
categorized: {by: :c, method: :stroke_width}
|
|
320
|
+
)
|
|
321
|
+
).to eq plot
|
|
278
322
|
end
|
|
279
323
|
|
|
280
324
|
it 'plots line plot categoried by custom stroke widths' do
|
|
@@ -284,9 +328,13 @@ describe Daru::DataFrame, 'category plotting' do
|
|
|
284
328
|
expect(diagram).to receive(:stroke_width).with 200
|
|
285
329
|
expect(diagram).to receive(:stroke_width).with 300
|
|
286
330
|
expect(plot).to receive :legend
|
|
287
|
-
expect(
|
|
288
|
-
|
|
289
|
-
|
|
331
|
+
expect(
|
|
332
|
+
df.plot(
|
|
333
|
+
type: :line, x: :a, y: :b,
|
|
334
|
+
categorized: {
|
|
335
|
+
by: :c, method: :stroke_width, stroke_width: [100, 200, 300]}
|
|
336
|
+
)
|
|
337
|
+
).to eq plot
|
|
290
338
|
end
|
|
291
339
|
end
|
|
292
340
|
|