gruff 0.6.0-java → 0.11.0-java

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 (121) hide show
  1. checksums.yaml +5 -5
  2. data/.editorconfig +14 -0
  3. data/.github/ISSUE_TEMPLATE.md +18 -0
  4. data/.gitignore +3 -0
  5. data/.rubocop.yml +109 -0
  6. data/.rubocop_todo.yml +112 -0
  7. data/.travis.yml +24 -15
  8. data/.yardopts +1 -0
  9. data/{History.txt → CHANGELOG.md} +72 -25
  10. data/Gemfile +3 -7
  11. data/README.md +57 -25
  12. data/Rakefile +21 -192
  13. data/assets/plastik/blue.png +0 -0
  14. data/assets/plastik/green.png +0 -0
  15. data/assets/plastik/red.png +0 -0
  16. data/docker/Dockerfile +14 -0
  17. data/docker/build.sh +4 -0
  18. data/docker/launch.sh +4 -0
  19. data/gruff.gemspec +21 -13
  20. data/init.rb +2 -0
  21. data/lib/gruff.rb +26 -2
  22. data/lib/gruff/accumulator_bar.rb +18 -8
  23. data/lib/gruff/area.rb +33 -19
  24. data/lib/gruff/bar.rb +76 -45
  25. data/lib/gruff/base.rb +435 -704
  26. data/lib/gruff/bezier.rb +32 -17
  27. data/lib/gruff/bullet.rb +62 -68
  28. data/lib/gruff/dot.rb +38 -82
  29. data/lib/gruff/helper/bar_conversion.rb +47 -0
  30. data/lib/gruff/helper/bar_value_label_mixin.rb +30 -0
  31. data/lib/gruff/helper/stacked_mixin.rb +23 -0
  32. data/lib/gruff/histogram.rb +60 -0
  33. data/lib/gruff/line.rb +134 -170
  34. data/lib/gruff/mini/bar.rb +17 -10
  35. data/lib/gruff/mini/legend.rb +24 -36
  36. data/lib/gruff/mini/pie.rb +18 -12
  37. data/lib/gruff/mini/side_bar.rb +26 -12
  38. data/lib/gruff/net.rb +68 -81
  39. data/lib/gruff/patch/rmagick.rb +33 -0
  40. data/lib/gruff/patch/string.rb +10 -0
  41. data/lib/gruff/photo_bar.rb +39 -42
  42. data/lib/gruff/pie.rb +180 -89
  43. data/lib/gruff/renderer/bezier.rb +21 -0
  44. data/lib/gruff/renderer/circle.rb +21 -0
  45. data/lib/gruff/renderer/dash_line.rb +22 -0
  46. data/lib/gruff/renderer/dot.rb +39 -0
  47. data/lib/gruff/renderer/ellipse.rb +21 -0
  48. data/lib/gruff/renderer/line.rb +42 -0
  49. data/lib/gruff/renderer/polygon.rb +23 -0
  50. data/lib/gruff/renderer/polyline.rb +21 -0
  51. data/lib/gruff/renderer/rectangle.rb +19 -0
  52. data/lib/gruff/renderer/renderer.rb +132 -0
  53. data/lib/gruff/renderer/text.rb +53 -0
  54. data/lib/gruff/scatter.rb +163 -182
  55. data/lib/gruff/scene.rb +31 -41
  56. data/lib/gruff/side_bar.rb +81 -65
  57. data/lib/gruff/side_stacked_bar.rb +78 -62
  58. data/lib/gruff/spider.rb +49 -57
  59. data/lib/gruff/stacked_area.rb +40 -32
  60. data/lib/gruff/stacked_bar.rb +86 -53
  61. data/lib/gruff/store/base_data.rb +38 -0
  62. data/lib/gruff/store/custom_data.rb +38 -0
  63. data/lib/gruff/store/store.rb +80 -0
  64. data/lib/gruff/store/xy_data.rb +59 -0
  65. data/lib/gruff/themes.rb +32 -33
  66. data/lib/gruff/version.rb +3 -1
  67. metadata +80 -102
  68. data/Manifest.txt +0 -81
  69. data/RELEASE.md +0 -30
  70. data/assets/bubble.png +0 -0
  71. data/assets/city_scene/background/0000.png +0 -0
  72. data/assets/city_scene/background/0600.png +0 -0
  73. data/assets/city_scene/background/2000.png +0 -0
  74. data/assets/city_scene/clouds/cloudy.png +0 -0
  75. data/assets/city_scene/clouds/partly_cloudy.png +0 -0
  76. data/assets/city_scene/clouds/stormy.png +0 -0
  77. data/assets/city_scene/grass/default.png +0 -0
  78. data/assets/city_scene/haze/true.png +0 -0
  79. data/assets/city_scene/number_sample/1.png +0 -0
  80. data/assets/city_scene/number_sample/2.png +0 -0
  81. data/assets/city_scene/number_sample/default.png +0 -0
  82. data/assets/city_scene/sky/0000.png +0 -0
  83. data/assets/city_scene/sky/0200.png +0 -0
  84. data/assets/city_scene/sky/0400.png +0 -0
  85. data/assets/city_scene/sky/0600.png +0 -0
  86. data/assets/city_scene/sky/0800.png +0 -0
  87. data/assets/city_scene/sky/1000.png +0 -0
  88. data/assets/city_scene/sky/1200.png +0 -0
  89. data/assets/city_scene/sky/1400.png +0 -0
  90. data/assets/city_scene/sky/1500.png +0 -0
  91. data/assets/city_scene/sky/1700.png +0 -0
  92. data/assets/city_scene/sky/2000.png +0 -0
  93. data/assets/pc306715.jpg +0 -0
  94. data/lib/gruff/bar_conversion.rb +0 -46
  95. data/lib/gruff/deprecated.rb +0 -39
  96. data/lib/gruff/stacked_mixin.rb +0 -23
  97. data/test/gruff_test_case.rb +0 -154
  98. data/test/image_compare.rb +0 -58
  99. data/test/test_accumulator_bar.rb +0 -51
  100. data/test/test_area.rb +0 -134
  101. data/test/test_bar.rb +0 -505
  102. data/test/test_base.rb +0 -8
  103. data/test/test_bezier.rb +0 -33
  104. data/test/test_bullet.rb +0 -26
  105. data/test/test_dot.rb +0 -263
  106. data/test/test_labels_for_null_data.rb +0 -27
  107. data/test/test_legend.rb +0 -68
  108. data/test/test_line.rb +0 -657
  109. data/test/test_mini_bar.rb +0 -33
  110. data/test/test_mini_pie.rb +0 -25
  111. data/test/test_mini_side_bar.rb +0 -36
  112. data/test/test_net.rb +0 -231
  113. data/test/test_photo.rb +0 -41
  114. data/test/test_pie.rb +0 -161
  115. data/test/test_scatter.rb +0 -233
  116. data/test/test_scene.rb +0 -100
  117. data/test/test_side_bar.rb +0 -56
  118. data/test/test_sidestacked_bar.rb +0 -105
  119. data/test/test_spider.rb +0 -226
  120. data/test/test_stacked_area.rb +0 -52
  121. data/test/test_stacked_bar.rb +0 -68
@@ -1,233 +0,0 @@
1
- #!/usr/bin/ruby
2
-
3
- require File.dirname(__FILE__) + '/gruff_test_case'
4
-
5
- class TestGruffScatter < Test::Unit::TestCase
6
-
7
- def setup
8
- @datasets = [
9
- [:Chuck, [20, 10, 5, 12, 11, 6, 10, 7], [5, 10, 19, 6, 9, 1, 14, 8]],
10
- [:Brown, [5, 10, 20, 6, 9, 12, 14, 8], [20, 10, 5, 12, 11, 6, 10, 7]],
11
- [:Lucy, [19, 9, 6, 11, 12, 7, 15, 8], [6, 11, 18, 8, 12, 8, 10, 6]]
12
- ]
13
- end
14
-
15
- # Done
16
- def test_scatter_graph
17
- g = setup_basic_graph
18
- g.title = 'Basic Scatter Plot Test'
19
- g.write('test/output/scatter_basic.png')
20
- end
21
-
22
- #~ # Done
23
- def test_many_datapoints
24
- g = Gruff::Scatter.new
25
- g.title = 'Many Datapoint Graph Test'
26
- y_values = (0..50).map { rand(100) }
27
- x_values = (0..50).map { rand(100) }
28
- g.data('many points', x_values, y_values)
29
-
30
- # Default theme
31
- g.write('test/output/scatter_many.png')
32
- end
33
-
34
- # Done
35
- def test_no_data
36
- g = Gruff::Scatter.new(400)
37
- g.title = 'No Data'
38
- # Default theme
39
- g.write('test/output/scatter_no_data.png')
40
-
41
- g = Gruff::Scatter.new(400)
42
- g.title = 'No Data Title'
43
- g.no_data_message = 'There is no data'
44
- g.write('test/output/scatter_no_data_msg.png')
45
- end
46
-
47
- # Done
48
- def test_all_zeros
49
- g = Gruff::Scatter.new(400)
50
- g.title = 'All Zeros'
51
-
52
- g.data(:gus, [0, 0, 0, 0], [0, 0, 0, 0])
53
-
54
- # Default theme
55
- g.write('test/output/scatter_no_data_other.png')
56
- end
57
-
58
- # Done
59
- def test_some_nil_points
60
- g = Gruff::Scatter.new
61
- g.title = 'Some Nil Points'
62
-
63
- @datasets = [
64
- [:data1, [1, 2, 3, nil, 3, 5, 6], [5, nil, nil, nil, nil, 5, 7]]
65
- ]
66
-
67
- @datasets.each do |data|
68
- assert_raise ArgumentError do
69
- g.data(*data)
70
- end
71
- end
72
- end
73
-
74
- # Done
75
- def test_unequal_number_of_x_and_y_values
76
- g = Gruff::Scatter.new
77
- g.title = 'Unequal number of X and Y values'
78
-
79
- @datasets = [
80
- [:data1, [1, 2, 3], [1, 2]],
81
- [:data2, [1, 2, 3, 4, 5], [1, 2, 3, 4, 5, 6]],
82
- ]
83
-
84
- @datasets.each do |data|
85
- assert_raise ArgumentError do
86
- g.data(*data)
87
- end
88
- end
89
- end
90
-
91
- # Done
92
- def test_empty_set_of_axis_values
93
- g = Gruff::Scatter.new
94
- g.title = 'Missing Axis Values'
95
-
96
- @datasets = [
97
- [:data1, [1, 2, 3, 4, 5]]
98
- ]
99
-
100
- @datasets.each do |data|
101
- assert_raise ArgumentError do
102
- g.data(*data)
103
- end
104
- end
105
- end
106
-
107
- # Done
108
- def test_no_title
109
- g = Gruff::Scatter.new(400)
110
- g.data(:data1, [1, 2, 3, 4, 5], [1, 2, 3, 4, 5])
111
- g.write('test/output/scatter_no_title.png')
112
- end
113
-
114
- # Done
115
- def test_no_line_markers
116
- g = setup_basic_graph(400)
117
- g.title = 'No Line Markers'
118
- g.hide_line_markers = true
119
- g.write('test/output/scatter_no_line_markers.png')
120
- end
121
-
122
- # Done
123
- def test_no_legend
124
- g = setup_basic_graph(400)
125
- g.title = 'No Legend'
126
- g.hide_legend = true
127
- g.write('test/output/scatter_no_legend.png')
128
- end
129
-
130
- # Done
131
- def test_nothing_but_the_graph
132
- g = setup_basic_graph(400)
133
- g.title = 'THIS TITLE SHOULD NOT DISPLAY!!!'
134
- g.hide_line_markers = true
135
- g.hide_legend = true
136
- g.hide_title = true
137
- g.write('test/output/scatter_nothing_but_the_graph.png')
138
- end
139
-
140
- # TODO Implement baselines on x and y axis
141
- #~ def test_baseline_larger_than_data
142
- #~ g = setup_basic_graph(400)
143
- #~ g.title = "Baseline Larger Than Data"
144
- #~ g.baseline_value = 150
145
- #~ g.write("test/output/scatter_large_baseline.png")
146
- #~ end
147
-
148
- # Done
149
- def test_wide_graph
150
- g = setup_basic_graph('800x400')
151
- g.title = 'Wide Graph'
152
- g.write('test/output/scatter_wide_graph.png')
153
-
154
- g = setup_basic_graph('400x200')
155
- g.title = 'Wide Graph Small'
156
- g.write('test/output/scatter_wide_graph_small.png')
157
- end
158
-
159
- # Done
160
- def test_negative
161
- g = setup_pos_neg(800)
162
- g.write('test/output/scatter_pos_neg.png')
163
-
164
- g = setup_pos_neg(400)
165
- g.title = 'Pos/Neg Line Test Small'
166
- g.write('test/output/scatter_pos_neg_400.png')
167
- end
168
-
169
- # Done
170
- def test_all_negative
171
- g = setup_all_neg(800)
172
- g.write('test/output/scatter_all_neg.png')
173
-
174
- g = setup_all_neg(400)
175
- g.title = 'All Neg Line Test Small'
176
- g.write('test/output/scatter_all_neg_400.png')
177
- end
178
-
179
- # Done
180
- def test_no_hide_line_no_labels
181
- g = Gruff::Scatter.new
182
- g.title = 'No Hide Line No Labels'
183
- @datasets.each do |data|
184
- g.data(data[0], data[1], data[2])
185
- end
186
- g.hide_line_markers = false
187
- g.write('test/output/scatter_no_hide.png')
188
- end
189
-
190
- def test_no_set_labels
191
- g = Gruff::Scatter.new
192
- g.title = 'Setting Labels Test'
193
- g.labels = {
194
- 0 => 'This',
195
- 1 => 'should',
196
- 2 => 'not',
197
- 3 => 'show',
198
- 4 => 'up'
199
- }
200
- @datasets.each do |data|
201
- g.data(data[0], data[1], data[2])
202
- end
203
- g.write('test/output/scatter_no_labels.png')
204
- end
205
-
206
- protected
207
-
208
- def setup_basic_graph(size=800)
209
- g = Gruff::Scatter.new(size)
210
- g.title = 'Rad Graph'
211
- @datasets.each do |data|
212
- g.data(data[0], data[1], data[2])
213
- end
214
- g
215
- end
216
-
217
- def setup_pos_neg(size=800)
218
- g = Gruff::Scatter.new(size)
219
- g.title = 'Pos/Neg Scatter Graph Test'
220
- g.data(:apples, [-1, 0, 4, -4], [-5, -1, 3, 4])
221
- g.data(:peaches, [10, 8, 6, 3], [-1, 1, 3, 3])
222
- g
223
- end
224
-
225
- def setup_all_neg(size=800)
226
- g = Gruff::Scatter.new(size)
227
- g.title = 'Neg Scatter Graph Test'
228
- g.data(:apples, [-1, -1, -4, -4], [-5, -1, -3, -4])
229
- g.data(:peaches, [-10, -8, -6, -3], [-1, -1, -3, -3])
230
- g
231
- end
232
-
233
- end # end GruffTestCase
@@ -1,100 +0,0 @@
1
- #!/usr/bin/ruby
2
-
3
- require File.dirname(__FILE__) + "/gruff_test_case"
4
- require 'yaml'
5
-
6
- class LayerStub < Gruff::Layer; attr_reader :base_dir, :filenames, :selected_filename; end
7
-
8
- class TestGruffScene < GruffTestCase
9
-
10
- def test_hazy
11
- g = setup_scene
12
- g.weather = "cloudy"
13
- g.haze = true
14
- g.time = Time.mktime(2006, 7, 4, 4, 35)
15
- g.write "test/output/scene_hazy_night.png"
16
- end
17
-
18
- def test_stormy_night
19
- g = setup_scene
20
- g.weather = "stormy"
21
- g.time = Time.mktime(2006, 7, 4, 0, 0)
22
- g.write "test/output/scene_stormy_night.png"
23
- end
24
-
25
-
26
- def test_not_hazy
27
- g = setup_scene
28
- g.weather = "cloudy"
29
- g.haze = false
30
- g.time = Time.mktime(2006, 7, 4, 6, 00)
31
- g.write "test/output/scene_not_hazy_day.png"
32
- end
33
-
34
- def test_partly_cloudy
35
- g = setup_scene
36
- g.weather = "partly cloudy"
37
- g.haze = false
38
- g.time = Time.mktime(2006, 7, 4, 13, 00)
39
- g.write "test/output/scene_partly_cloudy_day.png"
40
- end
41
-
42
-
43
- def test_stormy_day
44
- g = setup_scene
45
- g.weather = "stormy"
46
- g.haze = false
47
- g.time = Time.mktime(2006, 7, 4, 8, 00)
48
- g.write "test/output/scene_stormy_day.png"
49
- end
50
-
51
-
52
- def test_layer
53
- l = LayerStub.new(File.expand_path("../assets/city_scene", File.dirname(__FILE__)), "clouds")
54
- assert_equal %w(cloudy.png partly_cloudy.png stormy.png), l.filenames.sort
55
-
56
- l = LayerStub.new(File.expand_path("../assets/city_scene", File.dirname(__FILE__)), "grass")
57
- assert_equal 'default.png', l.selected_filename
58
-
59
- l = LayerStub.new(File.expand_path("../assets/city_scene", File.dirname(__FILE__)), "sky")
60
- l.update Time.mktime(2006, 7, 4, 12, 35) # 12:35, July 4, 2006
61
- assert_equal '1200.png', l.selected_filename
62
-
63
- l = LayerStub.new(File.expand_path("../assets/city_scene", File.dirname(__FILE__)), "sky")
64
- l.update Time.mktime(2006, 7, 4, 0, 0) # 00:00, July 4, 2006
65
- assert_equal '0000.png', l.selected_filename
66
-
67
- l = LayerStub.new(File.expand_path("../assets/city_scene", File.dirname(__FILE__)), "sky")
68
- l.update Time.mktime(2006, 7, 4, 23, 35) # 23:35, July 4, 2006
69
- assert_equal '2000.png', l.selected_filename
70
-
71
- l = LayerStub.new(File.expand_path("../assets/city_scene", File.dirname(__FILE__)), "sky")
72
- l.update Time.mktime(2006, 7, 4, 0, 1) # 00:01, July 4, 2006
73
- assert_equal '0000.png', l.selected_filename
74
-
75
- l = LayerStub.new(File.expand_path("../assets/city_scene", File.dirname(__FILE__)), "sky")
76
- l.update Time.mktime(2006, 7, 4, 2, 0) # 02:00, July 4, 2006
77
- assert_equal '0200.png', l.selected_filename
78
-
79
- l = LayerStub.new(File.expand_path("../assets/city_scene", File.dirname(__FILE__)), "sky")
80
- l.update Time.mktime(2006, 7, 4, 4, 00) # 04:00, July 4, 2006
81
- assert_equal '0400.png', l.selected_filename
82
-
83
- # TODO Need number_sample folder
84
- # l = LayerStub.new(File.expand_path("../assets/city_scene", File.dirname(__FILE__)), "number_sample")
85
- # assert_equal %w(1.png 2.png default.png), l.filenames
86
- # l.update 3
87
- # assert_equal 'default.png', l.selected_filename
88
- end
89
-
90
- private
91
-
92
- def setup_scene
93
- g = Gruff::Scene.new("500x100", File.expand_path("../assets/city_scene", File.dirname(__FILE__)) )
94
- g.layers = %w(background haze sky clouds)
95
- g.weather_group = %w(clouds)
96
- g.time_group = %w(background sky)
97
- g
98
- end
99
-
100
- end
@@ -1,56 +0,0 @@
1
-
2
- require File.dirname(__FILE__) + "/gruff_test_case"
3
-
4
- class TestGruffSideBar < GruffTestCase
5
-
6
- def test_bar_graph
7
- g = setup_basic_graph(Gruff::SideBar, 800)
8
- write_test_file g, 'side_bar.png'
9
- end
10
-
11
- def test_bar_spacing
12
- g = setup_basic_graph(Gruff::SideBar, 800)
13
- g.bar_spacing = 0
14
- g.title = "100% spacing between bars"
15
- g.write("test/output/side_bar_spacing_full.png")
16
-
17
- g = setup_basic_graph(Gruff::SideBar, 800)
18
- g.bar_spacing = 0.5
19
- g.title = "50% spacing between bars"
20
- g.write("test/output/side_bar_spacing_half.png")
21
-
22
- g = setup_basic_graph(Gruff::SideBar, 800)
23
- g.bar_spacing = 1
24
- g.title = "0% spacing between bars"
25
- g.write("test/output/side_bar_spacing_none.png")
26
- end
27
-
28
- def test_x_axis_range
29
- g = Gruff::SideBar.new('400x300')
30
- g.title = 'Should run from 8 to 32'
31
- g.hide_line_numbers = false
32
- g.theme_37signals
33
- g.data("Grapes", [8])
34
- g.data("Apples", [24])
35
- g.data("Oranges", [32])
36
- g.data("Watermelon", [8])
37
- g.data("Peaches", [12])
38
- g.labels = {0 => '2003', 2 => '2004', 4 => '2005'}
39
- g.write("test/output/side_bar_data_range.png")
40
- end
41
-
42
- def test_bar_labels
43
- g = Gruff::SideBar.new('400x300')
44
- g.title = 'Should show labels for each bar'
45
- g.data("Grapes", [8])
46
- g.data("Apples", [24])
47
- g.data("Oranges", [32])
48
- g.data("Watermelon", [8])
49
- g.data("Peaches", [12])
50
- g.labels = {0 => '2003', 2 => '2004', 4 => '2005'}
51
- g.show_labels_for_bar_values = true
52
- g.write("test/output/side_bar_labels.png")
53
- end
54
-
55
- end
56
-
@@ -1,105 +0,0 @@
1
- #!/usr/bin/ruby
2
-
3
- require File.dirname(__FILE__) + "/gruff_test_case"
4
-
5
- class TestGruffSideStackedBar < GruffTestCase
6
-
7
- def setup
8
- @datasets = [
9
- [:Jimmy, [25, 36, 86, 39]],
10
- [:Charles, [80, 54, 67, 54]],
11
- [:Julie, [22, 29, 35, 38]],
12
- #[:Jane, [95, 95, 95, 90, 85, 80, 88, 100]],
13
- #[:Philip, [90, 34, 23, 12, 78, 89, 98, 88]],
14
- #["Arthur", [5, 10, 13, 11, 6, 16, 22, 32]],
15
- ]
16
- @sample_labels = {
17
- 0 => '5/6',
18
- 1 => '5/15',
19
- 2 => '5/24'
20
- }
21
-
22
- end
23
-
24
- def test_bar_graph
25
- g = Gruff::SideStackedBar.new
26
- g.title = "Visual Stacked Bar Graph Test"
27
- g.labels = {
28
- 0 => '5/6',
29
- 1 => '5/15',
30
- 2 => '5/24',
31
- 3 => '5/30',
32
- }
33
- @datasets.each do |data|
34
- g.data(data[0], data[1])
35
- end
36
- g.write "test/output/side_stacked_bar_keynote.png"
37
- end
38
-
39
-
40
- def test_bar_graph_small
41
- g = Gruff::SideStackedBar.new(400)
42
- g.title = "Visual Stacked Bar Graph Test"
43
- g.labels = {
44
- 0 => '5/6',
45
- 1 => '5/15',
46
- 2 => '5/24',
47
- 3 => '5/30',
48
- }
49
- @datasets.each do |data|
50
- g.data(data[0], data[1])
51
- end
52
- g.write "test/output/side_stacked_bar_keynote_small.png"
53
- end
54
-
55
- def test_wide
56
- g = setup_basic_graph('800x400')
57
- g.title = "Wide SSBar"
58
- g.write "test/output/side_stacked_bar_wide.png"
59
- end
60
-
61
- def test_should_space_long_left_labels_appropriately
62
- g = Gruff::SideStackedBar.new
63
- g.title = "Stacked Bar Long Label"
64
- g.labels = {
65
- 0 => 'September',
66
- 1 => 'Oct',
67
- 2 => 'Nov',
68
- 3 => 'Dec',
69
- }
70
- @datasets.each do |data|
71
- g.data(data[0], data[1])
72
- end
73
- g.write "test/output/side_stacked_bar_long_label.png"
74
- end
75
-
76
- def test_bar_labels
77
- g = Gruff::SideStackedBar.new
78
- g.title = "Stacked Bar Long Label"
79
- g.labels = {
80
- 0 => 'September',
81
- 1 => 'Oct',
82
- 2 => 'Nov',
83
- 3 => 'Dec',
84
- }
85
- @datasets.each do |data|
86
- g.data(data[0], data[1])
87
- end
88
- g.show_labels_for_bar_values = true
89
- g.write "test/output/side_stacked_bar_labels.png"
90
- end
91
-
92
- protected
93
-
94
- def setup_basic_graph(size=800)
95
- g = Gruff::SideStackedBar.new(size)
96
- g.title = "My Graph Title"
97
- g.labels = @sample_labels
98
- @datasets.each do |data|
99
- g.data(data[0], data[1])
100
- end
101
- return g
102
- end
103
-
104
- end
105
-