gruff 0.7.0-java → 0.12.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 (113) hide show
  1. checksums.yaml +5 -5
  2. data/{History.txt → CHANGELOG.md} +81 -25
  3. data/Gemfile +3 -1
  4. data/README.md +51 -23
  5. data/assets/plastik/blue.png +0 -0
  6. data/assets/plastik/green.png +0 -0
  7. data/assets/plastik/red.png +0 -0
  8. data/gruff.gemspec +23 -13
  9. data/init.rb +2 -0
  10. data/lib/gruff.rb +33 -4
  11. data/lib/gruff/accumulator_bar.rb +17 -9
  12. data/lib/gruff/area.rb +31 -21
  13. data/lib/gruff/bar.rb +90 -46
  14. data/lib/gruff/base.rb +476 -710
  15. data/lib/gruff/bezier.rb +29 -18
  16. data/lib/gruff/bullet.rb +58 -71
  17. data/lib/gruff/dot.rb +35 -83
  18. data/lib/gruff/helper/bar_conversion.rb +47 -0
  19. data/lib/gruff/helper/bar_value_label_mixin.rb +33 -0
  20. data/lib/gruff/helper/stacked_mixin.rb +23 -0
  21. data/lib/gruff/histogram.rb +59 -0
  22. data/lib/gruff/line.rb +121 -199
  23. data/lib/gruff/mini/bar.rb +17 -10
  24. data/lib/gruff/mini/legend.rb +26 -38
  25. data/lib/gruff/mini/pie.rb +18 -13
  26. data/lib/gruff/mini/side_bar.rb +25 -12
  27. data/lib/gruff/net.rb +69 -83
  28. data/lib/gruff/patch/rmagick.rb +31 -0
  29. data/lib/gruff/patch/string.rb +13 -0
  30. data/lib/gruff/photo_bar.rb +36 -43
  31. data/lib/gruff/pie.rb +42 -103
  32. data/lib/gruff/renderer/bezier.rb +22 -0
  33. data/lib/gruff/renderer/circle.rb +22 -0
  34. data/lib/gruff/renderer/dash_line.rb +23 -0
  35. data/lib/gruff/renderer/dot.rb +40 -0
  36. data/lib/gruff/renderer/ellipse.rb +22 -0
  37. data/lib/gruff/renderer/line.rb +43 -0
  38. data/lib/gruff/renderer/polygon.rb +24 -0
  39. data/lib/gruff/renderer/polyline.rb +22 -0
  40. data/lib/gruff/renderer/rectangle.rb +20 -0
  41. data/lib/gruff/renderer/renderer.rb +120 -0
  42. data/lib/gruff/renderer/text.rb +57 -0
  43. data/lib/gruff/scatter.rb +128 -201
  44. data/lib/gruff/scene.rb +30 -41
  45. data/lib/gruff/side_bar.rb +100 -68
  46. data/lib/gruff/side_stacked_bar.rb +92 -63
  47. data/lib/gruff/spider.rb +47 -53
  48. data/lib/gruff/stacked_area.rb +37 -34
  49. data/lib/gruff/stacked_bar.rb +99 -54
  50. data/lib/gruff/store/basic_data.rb +36 -0
  51. data/lib/gruff/store/custom_data.rb +36 -0
  52. data/lib/gruff/store/store.rb +81 -0
  53. data/lib/gruff/store/xy_data.rb +58 -0
  54. data/lib/gruff/themes.rb +32 -33
  55. data/lib/gruff/version.rb +3 -1
  56. metadata +74 -102
  57. data/.gitignore +0 -7
  58. data/.travis.yml +0 -19
  59. data/Manifest.txt +0 -81
  60. data/RELEASE.md +0 -30
  61. data/Rakefile +0 -218
  62. data/assets/bubble.png +0 -0
  63. data/assets/city_scene/background/0000.png +0 -0
  64. data/assets/city_scene/background/0600.png +0 -0
  65. data/assets/city_scene/background/2000.png +0 -0
  66. data/assets/city_scene/clouds/cloudy.png +0 -0
  67. data/assets/city_scene/clouds/partly_cloudy.png +0 -0
  68. data/assets/city_scene/clouds/stormy.png +0 -0
  69. data/assets/city_scene/grass/default.png +0 -0
  70. data/assets/city_scene/haze/true.png +0 -0
  71. data/assets/city_scene/number_sample/1.png +0 -0
  72. data/assets/city_scene/number_sample/2.png +0 -0
  73. data/assets/city_scene/number_sample/default.png +0 -0
  74. data/assets/city_scene/sky/0000.png +0 -0
  75. data/assets/city_scene/sky/0200.png +0 -0
  76. data/assets/city_scene/sky/0400.png +0 -0
  77. data/assets/city_scene/sky/0600.png +0 -0
  78. data/assets/city_scene/sky/0800.png +0 -0
  79. data/assets/city_scene/sky/1000.png +0 -0
  80. data/assets/city_scene/sky/1200.png +0 -0
  81. data/assets/city_scene/sky/1400.png +0 -0
  82. data/assets/city_scene/sky/1500.png +0 -0
  83. data/assets/city_scene/sky/1700.png +0 -0
  84. data/assets/city_scene/sky/2000.png +0 -0
  85. data/assets/pc306715.jpg +0 -0
  86. data/lib/gruff/bar_conversion.rb +0 -46
  87. data/lib/gruff/deprecated.rb +0 -39
  88. data/lib/gruff/stacked_mixin.rb +0 -23
  89. data/test/gruff_test_case.rb +0 -152
  90. data/test/image_compare.rb +0 -58
  91. data/test/test_accumulator_bar.rb +0 -51
  92. data/test/test_area.rb +0 -134
  93. data/test/test_bar.rb +0 -505
  94. data/test/test_base.rb +0 -33
  95. data/test/test_bezier.rb +0 -33
  96. data/test/test_bullet.rb +0 -26
  97. data/test/test_dot.rb +0 -263
  98. data/test/test_labels_for_null_data.rb +0 -27
  99. data/test/test_legend.rb +0 -68
  100. data/test/test_line.rb +0 -674
  101. data/test/test_mini_bar.rb +0 -33
  102. data/test/test_mini_pie.rb +0 -25
  103. data/test/test_mini_side_bar.rb +0 -36
  104. data/test/test_net.rb +0 -231
  105. data/test/test_photo.rb +0 -41
  106. data/test/test_pie.rb +0 -194
  107. data/test/test_scatter.rb +0 -270
  108. data/test/test_scene.rb +0 -100
  109. data/test/test_side_bar.rb +0 -56
  110. data/test/test_sidestacked_bar.rb +0 -105
  111. data/test/test_spider.rb +0 -226
  112. data/test/test_stacked_area.rb +0 -52
  113. data/test/test_stacked_bar.rb +0 -68
@@ -1,270 +0,0 @@
1
- #!/usr/bin/ruby
2
-
3
- require File.dirname(__FILE__) + '/gruff_test_case'
4
-
5
- class TestGruffScatter < Minitest::Test
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
- def test_custom_label_format
35
- g = Gruff::Scatter.new('1000x500')
36
- g.top_margin = 0
37
- g.hide_legend = true
38
- g.hide_title = true
39
- g.marker_font_size = 10
40
- g.theme = {
41
- :colors => ['#12a702', '#aedaa9'],
42
- :marker_color => '#dddddd',
43
- :font_color => 'black',
44
- :background_colors => 'white'
45
- }
46
-
47
- # Points style
48
- g.circle_radius = 1
49
- g.stroke_width = 0.01
50
-
51
- # Axis labels
52
- g.x_label_margin = 40
53
- g.bottom_margin = 60
54
- g.disable_significant_rounding_x_axis = true
55
- g.use_vertical_x_labels = true
56
- g.enable_vertical_line_markers = true
57
- g.marker_x_count = 50 # One label every 2 days
58
- g.x_axis_label_format = lambda do |value|
59
- DateTime.strptime(value.to_i.to_s,'%s').strftime('%d.%m.%Y')
60
- end
61
- g.y_axis_increment = 1
62
-
63
- # Fake data (100 days, random times of day between 5 and 16)
64
- r = Random.new(269155)
65
- y_values = (0..100).map { 5 + r.rand(12) }
66
- x_values = (0..100).map { |i| Date.today.strftime('%s').to_i + i*3600*24 }
67
- g.data('many points', x_values, y_values)
68
- g.write('test/output/scatter_custom_label_format.png')
69
- end
70
-
71
- # Done
72
- def test_no_data
73
- g = Gruff::Scatter.new(400)
74
- g.title = 'No Data'
75
- # Default theme
76
- g.write('test/output/scatter_no_data.png')
77
-
78
- g = Gruff::Scatter.new(400)
79
- g.title = 'No Data Title'
80
- g.no_data_message = 'There is no data'
81
- g.write('test/output/scatter_no_data_msg.png')
82
- end
83
-
84
- # Done
85
- def test_all_zeros
86
- g = Gruff::Scatter.new(400)
87
- g.title = 'All Zeros'
88
-
89
- g.data(:gus, [0, 0, 0, 0], [0, 0, 0, 0])
90
-
91
- # Default theme
92
- g.write('test/output/scatter_no_data_other.png')
93
- end
94
-
95
- # Done
96
- def test_some_nil_points
97
- g = Gruff::Scatter.new
98
- g.title = 'Some Nil Points'
99
-
100
- @datasets = [
101
- [:data1, [1, 2, 3, nil, 3, 5, 6], [5, nil, nil, nil, nil, 5, 7]]
102
- ]
103
-
104
- @datasets.each do |data|
105
- assert_raises ArgumentError do
106
- g.data(*data)
107
- end
108
- end
109
- end
110
-
111
- # Done
112
- def test_unequal_number_of_x_and_y_values
113
- g = Gruff::Scatter.new
114
- g.title = 'Unequal number of X and Y values'
115
-
116
- @datasets = [
117
- [:data1, [1, 2, 3], [1, 2]],
118
- [:data2, [1, 2, 3, 4, 5], [1, 2, 3, 4, 5, 6]],
119
- ]
120
-
121
- @datasets.each do |data|
122
- assert_raises ArgumentError do
123
- g.data(*data)
124
- end
125
- end
126
- end
127
-
128
- # Done
129
- def test_empty_set_of_axis_values
130
- g = Gruff::Scatter.new
131
- g.title = 'Missing Axis Values'
132
-
133
- @datasets = [
134
- [:data1, [1, 2, 3, 4, 5]]
135
- ]
136
-
137
- @datasets.each do |data|
138
- assert_raises ArgumentError do
139
- g.data(*data)
140
- end
141
- end
142
- end
143
-
144
- # Done
145
- def test_no_title
146
- g = Gruff::Scatter.new(400)
147
- g.data(:data1, [1, 2, 3, 4, 5], [1, 2, 3, 4, 5])
148
- g.write('test/output/scatter_no_title.png')
149
- end
150
-
151
- # Done
152
- def test_no_line_markers
153
- g = setup_basic_graph(400)
154
- g.title = 'No Line Markers'
155
- g.hide_line_markers = true
156
- g.write('test/output/scatter_no_line_markers.png')
157
- end
158
-
159
- # Done
160
- def test_no_legend
161
- g = setup_basic_graph(400)
162
- g.title = 'No Legend'
163
- g.hide_legend = true
164
- g.write('test/output/scatter_no_legend.png')
165
- end
166
-
167
- # Done
168
- def test_nothing_but_the_graph
169
- g = setup_basic_graph(400)
170
- g.title = 'THIS TITLE SHOULD NOT DISPLAY!!!'
171
- g.hide_line_markers = true
172
- g.hide_legend = true
173
- g.hide_title = true
174
- g.write('test/output/scatter_nothing_but_the_graph.png')
175
- end
176
-
177
- # TODO Implement baselines on x and y axis
178
- #~ def test_baseline_larger_than_data
179
- #~ g = setup_basic_graph(400)
180
- #~ g.title = "Baseline Larger Than Data"
181
- #~ g.baseline_value = 150
182
- #~ g.write("test/output/scatter_large_baseline.png")
183
- #~ end
184
-
185
- # Done
186
- def test_wide_graph
187
- g = setup_basic_graph('800x400')
188
- g.title = 'Wide Graph'
189
- g.write('test/output/scatter_wide_graph.png')
190
-
191
- g = setup_basic_graph('400x200')
192
- g.title = 'Wide Graph Small'
193
- g.write('test/output/scatter_wide_graph_small.png')
194
- end
195
-
196
- # Done
197
- def test_negative
198
- g = setup_pos_neg(800)
199
- g.write('test/output/scatter_pos_neg.png')
200
-
201
- g = setup_pos_neg(400)
202
- g.title = 'Pos/Neg Line Test Small'
203
- g.write('test/output/scatter_pos_neg_400.png')
204
- end
205
-
206
- # Done
207
- def test_all_negative
208
- g = setup_all_neg(800)
209
- g.write('test/output/scatter_all_neg.png')
210
-
211
- g = setup_all_neg(400)
212
- g.title = 'All Neg Line Test Small'
213
- g.write('test/output/scatter_all_neg_400.png')
214
- end
215
-
216
- # Done
217
- def test_no_hide_line_no_labels
218
- g = Gruff::Scatter.new
219
- g.title = 'No Hide Line No Labels'
220
- @datasets.each do |data|
221
- g.data(data[0], data[1], data[2])
222
- end
223
- g.hide_line_markers = false
224
- g.write('test/output/scatter_no_hide.png')
225
- end
226
-
227
- def test_no_set_labels
228
- g = Gruff::Scatter.new
229
- g.title = 'Setting Labels Test'
230
- g.labels = {
231
- 0 => 'This',
232
- 1 => 'should',
233
- 2 => 'not',
234
- 3 => 'show',
235
- 4 => 'up'
236
- }
237
- @datasets.each do |data|
238
- g.data(data[0], data[1], data[2])
239
- end
240
- g.write('test/output/scatter_no_labels.png')
241
- end
242
-
243
- protected
244
-
245
- def setup_basic_graph(size=800)
246
- g = Gruff::Scatter.new(size)
247
- g.title = 'Rad Graph'
248
- @datasets.each do |data|
249
- g.data(data[0], data[1], data[2])
250
- end
251
- g
252
- end
253
-
254
- def setup_pos_neg(size=800)
255
- g = Gruff::Scatter.new(size)
256
- g.title = 'Pos/Neg Scatter Graph Test'
257
- g.data(:apples, [-1, 0, 4, -4], [-5, -1, 3, 4])
258
- g.data(:peaches, [10, 8, 6, 3], [-1, 1, 3, 3])
259
- g
260
- end
261
-
262
- def setup_all_neg(size=800)
263
- g = Gruff::Scatter.new(size)
264
- g.title = 'Neg Scatter Graph Test'
265
- g.data(:apples, [-1, -1, -4, -4], [-5, -1, -3, -4])
266
- g.data(:peaches, [-10, -8, -6, -3], [-1, -1, -3, -3])
267
- g
268
- end
269
-
270
- 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
-