gruff 0.2.8 → 0.2.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,66 @@
1
+
2
+ require File.dirname(__FILE__) + '/base'
3
+ require File.dirname(__FILE__) + '/stacked_mixin'
4
+
5
+ class Gruff::StackedArea < Gruff::Base
6
+ include StackedMixin
7
+ attr_accessor :last_series_goes_on_bottom
8
+
9
+ def draw
10
+ super
11
+
12
+ return unless @has_data
13
+
14
+ @x_increment = @graph_width / (@column_count - 1).to_f
15
+ @d = @d.stroke 'transparent'
16
+
17
+ height = Array.new(@column_count, 0)
18
+
19
+ data_points = nil
20
+ iterator = last_series_goes_on_bottom ? :reverse_each : :each
21
+ @norm_data.send(iterator) do |data_row|
22
+ prev_data_points = data_points
23
+ data_points = Array.new
24
+
25
+ @d = @d.fill data_row[DATA_COLOR_INDEX]
26
+
27
+ data_row[1].each_with_index do |data_point, index|
28
+ # Use incremented x and scaled y
29
+ new_x = @graph_left + (@x_increment * index)
30
+ new_y = @graph_top + (@graph_height - data_point * @graph_height - height[index])
31
+
32
+ height[index] += (data_point * @graph_height)
33
+
34
+ data_points << new_x
35
+ data_points << new_y
36
+
37
+ draw_label(new_x, index)
38
+
39
+ end
40
+
41
+ if prev_data_points
42
+ poly_points = data_points.dup
43
+ (prev_data_points.length/2 - 1).downto(0) do |i|
44
+ poly_points << prev_data_points[2*i]
45
+ poly_points << prev_data_points[2*i+1]
46
+ end
47
+ poly_points << data_points[0]
48
+ poly_points << data_points[1]
49
+ else
50
+ poly_points = data_points.dup
51
+ poly_points << @graph_right
52
+ poly_points << @graph_bottom - 1
53
+ poly_points << @graph_left
54
+ poly_points << @graph_bottom - 1
55
+ poly_points << data_points[0]
56
+ poly_points << data_points[1]
57
+ end
58
+ @d = @d.polyline(*poly_points)
59
+
60
+ end
61
+
62
+ @d.draw(@base_image)
63
+ end
64
+
65
+
66
+ end
@@ -1,7 +1,9 @@
1
1
 
2
2
  require File.dirname(__FILE__) + '/base'
3
+ require File.dirname(__FILE__) + '/stacked_mixin'
3
4
 
4
5
  class Gruff::StackedBar < Gruff::Base
6
+ include StackedMixin
5
7
 
6
8
  # Draws a bar graph, but multiple sets are stacked on top of each other.
7
9
  def draw
@@ -23,6 +25,11 @@ class Gruff::StackedBar < Gruff::Base
23
25
  @d = @d.fill data_row[DATA_COLOR_INDEX]
24
26
 
25
27
  data_row[1].each_with_index do |data_point, point_index|
28
+ # Calculate center based on bar_width and current row
29
+ label_center = @graph_left + (@bar_width * point_index) + (@bar_width * spacing_factor / 2.0)
30
+ draw_label(label_center, point_index)
31
+
32
+ next if (data_point == 0)
26
33
  # Use incremented x and scaled y
27
34
  left_x = @graph_left + (@bar_width * point_index)
28
35
  left_y = @graph_top + (@graph_height -
@@ -32,13 +39,10 @@ class Gruff::StackedBar < Gruff::Base
32
39
  right_y = @graph_top + @graph_height - height[point_index] - 1
33
40
 
34
41
  # update the total height of the current stacked bar
35
- height[point_index] += (data_point * @graph_height - 2)
42
+ height[point_index] += (data_point * @graph_height )
36
43
 
37
44
  @d = @d.rectangle(left_x, left_y, right_x, right_y)
38
45
 
39
- # Calculate center based on bar_width and current row
40
- label_center = @graph_left + (@bar_width * point_index) + (@bar_width * spacing_factor / 2.0)
41
- draw_label(label_center, point_index)
42
46
  end
43
47
 
44
48
  end
@@ -0,0 +1,23 @@
1
+
2
+ module Gruff::Base::StackedMixin
3
+ # Used by StackedBar and child classes.
4
+ #
5
+ # tsal: moved from Base 03 FEB 2007
6
+ DATA_VALUES_INDEX = Gruff::Base::DATA_VALUES_INDEX
7
+ def get_maximum_by_stack
8
+ # Get sum of each stack
9
+ max_hash = {}
10
+ @data.each do |data_set|
11
+ data_set[DATA_VALUES_INDEX].each_with_index do |data_point, i|
12
+ max_hash[i] = 0.0 unless max_hash[i]
13
+ max_hash[i] += data_point.to_f
14
+ end
15
+ end
16
+
17
+ # @maximum_value = 0
18
+ max_hash.keys.each do |key|
19
+ @maximum_value = max_hash[key] if max_hash[key] > @maximum_value
20
+ end
21
+ @minimum_value = 0
22
+ end
23
+ end
@@ -1,4 +1,5 @@
1
1
  $:.unshift(File.dirname(__FILE__) + "/../lib/")
2
+ # require 'rubygems'
2
3
 
3
4
  require 'test/unit'
4
5
  require 'gruff'
data/test/test_pie.rb CHANGED
@@ -27,6 +27,31 @@ class TestGruffPie < GruffTestCase
27
27
  g.write("test/output/pie_keynote.png")
28
28
  end
29
29
 
30
+ def test_pie_graph_greyscale
31
+ g = Gruff::Pie.new
32
+ g.title = "Greyscale Pie Graph Test"
33
+ g.theme_greyscale
34
+ @datasets.each do |data|
35
+ g.data(data[0], data[1])
36
+ end
37
+
38
+ # Default theme
39
+ g.write("test/output/pie_grey.png")
40
+ end
41
+
42
+ def test_pie_graph_pastel
43
+ g = Gruff::Pie.new
44
+ g.theme_pastel
45
+ g.title = "Pastel Pie Graph Test"
46
+ @datasets.each do |data|
47
+ g.data(data[0], data[1])
48
+ end
49
+
50
+ # Default theme
51
+ g.write("test/output/pie_pastel.png")
52
+ end
53
+
54
+
30
55
  def test_pie_graph_small
31
56
  g = Gruff::Pie.new(400)
32
57
  g.title = "Visual Pie Graph Test Small"
metadata CHANGED
@@ -3,12 +3,11 @@ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: gruff
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.2.8
7
- date: 2006-11-06 00:00:00 -08:00
6
+ version: 0.2.9
7
+ date: 2007-11-07 00:00:00 -08:00
8
8
  summary: Beautiful graphs for one or multiple datasets.
9
9
  require_paths:
10
10
  - lib
11
- - test
12
11
  email: boss@topfunky.com
13
12
  homepage: http://nubyonrails.com/pages/gruff
14
13
  rubyforge_project: gruff
@@ -31,11 +30,11 @@ authors:
31
30
  - Geoffrey Grosenbach
32
31
  files:
33
32
  - CHANGELOG
34
- - Manifest.txt
35
33
  - MIT-LICENSE
36
- - Rakefile
34
+ - Manifest.txt
37
35
  - README.txt
38
- - assets/pc306715.jpg
36
+ - Rakefile
37
+ - assets/bubble.png
39
38
  - assets/city_scene/background/0000.png
40
39
  - assets/city_scene/background/0600.png
41
40
  - assets/city_scene/background/2000.png
@@ -58,14 +57,22 @@ files:
58
57
  - assets/city_scene/sky/1500.png
59
58
  - assets/city_scene/sky/1700.png
60
59
  - assets/city_scene/sky/2000.png
60
+ - assets/pc306715.jpg
61
+ - assets/plastik/blue.png
62
+ - assets/plastik/green.png
63
+ - assets/plastik/red.png
61
64
  - lib/gruff.rb
65
+ - lib/gruff/accumulator_bar.rb
62
66
  - lib/gruff/area.rb
63
67
  - lib/gruff/bar.rb
64
68
  - lib/gruff/bar_conversion.rb
65
- - lib/gruff/accumulator_bar.rb
66
69
  - lib/gruff/base.rb
67
70
  - lib/gruff/deprecated.rb
68
71
  - lib/gruff/line.rb
72
+ - lib/gruff/mini/bar.rb
73
+ - lib/gruff/mini/legend.rb
74
+ - lib/gruff/mini/pie.rb
75
+ - lib/gruff/mini/side_bar.rb
69
76
  - lib/gruff/net.rb
70
77
  - lib/gruff/photo_bar.rb
71
78
  - lib/gruff/pie.rb
@@ -73,15 +80,30 @@ files:
73
80
  - lib/gruff/side_bar.rb
74
81
  - lib/gruff/side_stacked_bar.rb
75
82
  - lib/gruff/spider.rb
83
+ - lib/gruff/stacked_area.rb
76
84
  - lib/gruff/stacked_bar.rb
77
- - lib/gruff/mini/bar.rb
78
- - lib/gruff/mini/legend.rb
79
- - lib/gruff/mini/pie.rb
80
- - lib/gruff/mini/side_bar.rb
85
+ - lib/gruff/stacked_mixin.rb
81
86
  - test/gruff_test_case.rb
82
- - test/output
87
+ - test/test_accumulator_bar.rb
83
88
  - test/test_area.rb
89
+ - test/test_bar.rb
90
+ - test/test_base.rb
91
+ - test/test_legend.rb
92
+ - test/test_line.rb
93
+ - test/test_mini_bar.rb
94
+ - test/test_mini_pie.rb
95
+ - test/test_mini_side_bar.rb
96
+ - test/test_net.rb
97
+ - test/test_photo.rb
98
+ - test/test_pie.rb
99
+ - test/test_scene.rb
100
+ - test/test_side_bar.rb
101
+ - test/test_sidestacked_bar.rb
102
+ - test/test_spider.rb
103
+ - test/test_stacked_bar.rb
104
+ test_files:
84
105
  - test/test_accumulator_bar.rb
106
+ - test/test_area.rb
85
107
  - test/test_bar.rb
86
108
  - test/test_base.rb
87
109
  - test/test_legend.rb
@@ -97,12 +119,12 @@ files:
97
119
  - test/test_sidestacked_bar.rb
98
120
  - test/test_spider.rb
99
121
  - test/test_stacked_bar.rb
100
- test_files: []
101
-
102
- rdoc_options: []
103
-
104
- extra_rdoc_files: []
105
-
122
+ rdoc_options:
123
+ - --main
124
+ - README.txt
125
+ extra_rdoc_files:
126
+ - Manifest.txt
127
+ - README.txt
106
128
  executables: []
107
129
 
108
130
  extensions: []
@@ -117,5 +139,5 @@ dependencies:
117
139
  requirements:
118
140
  - - ">="
119
141
  - !ruby/object:Gem::Version
120
- version: 1.1.2
142
+ version: 1.3.0
121
143
  version: