gruff 0.7.0-java → 0.8.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.
- checksums.yaml +5 -5
- data/.editorconfig +14 -0
- data/.rubocop.yml +16 -0
- data/.rubocop_todo.yml +923 -0
- data/.travis.yml +21 -14
- data/{History.txt → CHANGELOG.md} +32 -25
- data/README.md +3 -2
- data/Rakefile +27 -18
- data/assets/bubble.png +0 -0
- data/assets/city_scene/background/0000.png +0 -0
- data/assets/city_scene/background/0600.png +0 -0
- data/assets/city_scene/background/2000.png +0 -0
- data/assets/city_scene/clouds/cloudy.png +0 -0
- data/assets/city_scene/clouds/partly_cloudy.png +0 -0
- data/assets/city_scene/clouds/stormy.png +0 -0
- data/assets/city_scene/grass/default.png +0 -0
- data/assets/city_scene/haze/true.png +0 -0
- data/assets/city_scene/number_sample/1.png +0 -0
- data/assets/city_scene/number_sample/2.png +0 -0
- data/assets/city_scene/number_sample/default.png +0 -0
- data/assets/city_scene/sky/0000.png +0 -0
- data/assets/city_scene/sky/0200.png +0 -0
- data/assets/city_scene/sky/0400.png +0 -0
- data/assets/city_scene/sky/0600.png +0 -0
- data/assets/city_scene/sky/0800.png +0 -0
- data/assets/city_scene/sky/1000.png +0 -0
- data/assets/city_scene/sky/1200.png +0 -0
- data/assets/city_scene/sky/1400.png +0 -0
- data/assets/city_scene/sky/1500.png +0 -0
- data/assets/city_scene/sky/1700.png +0 -0
- data/assets/city_scene/sky/2000.png +0 -0
- data/assets/pc306715.jpg +0 -0
- data/assets/plastik/blue.png +0 -0
- data/assets/plastik/green.png +0 -0
- data/assets/plastik/red.png +0 -0
- data/gruff.gemspec +12 -10
- data/lib/gruff.rb +2 -2
- data/lib/gruff/accumulator_bar.rb +2 -2
- data/lib/gruff/area.rb +1 -4
- data/lib/gruff/bar.rb +12 -13
- data/lib/gruff/bar_conversion.rb +11 -11
- data/lib/gruff/base.rb +36 -36
- data/lib/gruff/bezier.rb +1 -2
- data/lib/gruff/bullet.rb +7 -10
- data/lib/gruff/deprecated.rb +10 -11
- data/lib/gruff/dot.rb +3 -4
- data/lib/gruff/line.rb +13 -14
- data/lib/gruff/mini/bar.rb +3 -3
- data/lib/gruff/mini/legend.rb +7 -8
- data/lib/gruff/mini/pie.rb +6 -6
- data/lib/gruff/mini/side_bar.rb +7 -7
- data/lib/gruff/net.rb +2 -8
- data/lib/gruff/photo_bar.rb +9 -12
- data/lib/gruff/pie.rb +6 -6
- data/lib/gruff/scatter.rb +47 -51
- data/lib/gruff/scene.rb +17 -19
- data/lib/gruff/side_bar.rb +5 -8
- data/lib/gruff/side_stacked_bar.rb +24 -26
- data/lib/gruff/spider.rb +14 -15
- data/lib/gruff/stacked_area.rb +12 -16
- data/lib/gruff/stacked_bar.rb +50 -52
- data/lib/gruff/stacked_mixin.rb +2 -3
- data/lib/gruff/themes.rb +32 -33
- data/lib/gruff/version.rb +1 -1
- metadata +15 -72
- data/RELEASE.md +0 -30
- data/test/gruff_test_case.rb +0 -152
- data/test/image_compare.rb +0 -58
- data/test/test_accumulator_bar.rb +0 -51
- data/test/test_area.rb +0 -134
- data/test/test_bar.rb +0 -505
- data/test/test_base.rb +0 -33
- data/test/test_bezier.rb +0 -33
- data/test/test_bullet.rb +0 -26
- data/test/test_dot.rb +0 -263
- data/test/test_labels_for_null_data.rb +0 -27
- data/test/test_legend.rb +0 -68
- data/test/test_line.rb +0 -674
- data/test/test_mini_bar.rb +0 -33
- data/test/test_mini_pie.rb +0 -25
- data/test/test_mini_side_bar.rb +0 -36
- data/test/test_net.rb +0 -231
- data/test/test_photo.rb +0 -41
- data/test/test_pie.rb +0 -194
- data/test/test_scatter.rb +0 -270
- data/test/test_scene.rb +0 -100
- data/test/test_side_bar.rb +0 -56
- data/test/test_sidestacked_bar.rb +0 -105
- data/test/test_spider.rb +0 -226
- data/test/test_stacked_area.rb +0 -52
- data/test/test_stacked_bar.rb +0 -68
data/lib/gruff.rb
CHANGED
@@ -2,7 +2,7 @@ require 'gruff/version'
|
|
2
2
|
|
3
3
|
# Extra full path added to fix loading errors on some installations.
|
4
4
|
|
5
|
-
%w
|
5
|
+
%w[
|
6
6
|
themes
|
7
7
|
base
|
8
8
|
area
|
@@ -27,6 +27,6 @@ require 'gruff/version'
|
|
27
27
|
mini/bar
|
28
28
|
mini/pie
|
29
29
|
mini/side_bar
|
30
|
-
|
30
|
+
].each do |filename|
|
31
31
|
require "gruff/#{filename}"
|
32
32
|
end
|
@@ -2,14 +2,14 @@ require File.dirname(__FILE__) + '/base'
|
|
2
2
|
|
3
3
|
##
|
4
4
|
# A special bar graph that shows a single dataset as a set of
|
5
|
-
# stacked bars. The bottom bar shows the running total and
|
5
|
+
# stacked bars. The bottom bar shows the running total and
|
6
6
|
# the top bar shows the new value being added to the array.
|
7
7
|
|
8
8
|
class Gruff::AccumulatorBar < Gruff::StackedBar
|
9
9
|
def draw
|
10
10
|
raise(Gruff::IncorrectNumberOfDatasetsException) unless @data.length == 1
|
11
11
|
|
12
|
-
accum_array = @data.first[DATA_VALUES_INDEX][0..-2].inject([0]) { |a, v| a << a.last + v}
|
12
|
+
accum_array = @data.first[DATA_VALUES_INDEX][0..-2].inject([0]) { |a, v| a << a.last + v }
|
13
13
|
data 'Accumulator', accum_array
|
14
14
|
set_colors
|
15
15
|
@data.reverse!
|
data/lib/gruff/area.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
|
2
1
|
require File.dirname(__FILE__) + '/base'
|
3
2
|
|
4
3
|
class Gruff::Area < Gruff::Base
|
@@ -41,11 +40,9 @@ class Gruff::Area < Gruff::Base
|
|
41
40
|
poly_points << @graph_bottom - 1
|
42
41
|
|
43
42
|
@d = @d.polyline(*poly_points)
|
44
|
-
|
45
43
|
end
|
46
44
|
|
47
45
|
@d.draw(@base_image)
|
48
46
|
end
|
49
|
-
|
50
|
-
|
47
|
+
|
51
48
|
end
|
data/lib/gruff/bar.rb
CHANGED
@@ -13,10 +13,10 @@ class Gruff::Bar < Gruff::Base
|
|
13
13
|
|
14
14
|
def draw
|
15
15
|
# Labels will be centered over the left of the bar if
|
16
|
-
# there are more labels than columns. This is basically the same
|
16
|
+
# there are more labels than columns. This is basically the same
|
17
17
|
# as where it would be for a line graph.
|
18
|
-
@center_labels_over_point = (@labels.keys.length > @column_count
|
19
|
-
|
18
|
+
@center_labels_over_point = (@labels.keys.length > @column_count)
|
19
|
+
|
20
20
|
super
|
21
21
|
return unless @has_data
|
22
22
|
|
@@ -30,7 +30,8 @@ class Gruff::Bar < Gruff::Base
|
|
30
30
|
#
|
31
31
|
# Default value is 0.9.
|
32
32
|
def spacing_factor=(space_percent)
|
33
|
-
raise ArgumentError, 'spacing_factor must be between 0.00 and 1.00' unless
|
33
|
+
raise ArgumentError, 'spacing_factor must be between 0.00 and 1.00' unless space_percent >= 0 and space_percent <= 1
|
34
|
+
|
34
35
|
@spacing_factor = (1 - space_percent)
|
35
36
|
end
|
36
37
|
|
@@ -52,25 +53,24 @@ protected
|
|
52
53
|
conversion.graph_top = @graph_top
|
53
54
|
|
54
55
|
# Set up the right mode [1,2,3] see BarConversion for further explanation
|
55
|
-
if @minimum_value >= 0
|
56
|
+
if @minimum_value >= 0
|
56
57
|
# all bars go from zero to positiv
|
57
58
|
conversion.mode = 1
|
58
59
|
else
|
59
60
|
# all bars go from 0 to negativ
|
60
|
-
if @maximum_value <= 0
|
61
|
+
if @maximum_value <= 0
|
61
62
|
conversion.mode = 2
|
62
63
|
else
|
63
64
|
# bars either go from zero to negativ or to positiv
|
64
65
|
conversion.mode = 3
|
65
66
|
conversion.spread = @spread
|
66
67
|
conversion.minimum_value = @minimum_value
|
67
|
-
conversion.zero = -@minimum_value
|
68
|
+
conversion.zero = -@minimum_value / @spread
|
68
69
|
end
|
69
70
|
end
|
70
71
|
|
71
72
|
# iterate over all normalised data
|
72
73
|
@norm_data.each_with_index do |data_row, row_index|
|
73
|
-
|
74
74
|
data_row[DATA_VALUES_INDEX].each_with_index do |data_point, point_index|
|
75
75
|
# Use incremented x and scaled y
|
76
76
|
# x
|
@@ -78,25 +78,24 @@ protected
|
|
78
78
|
right_x = left_x + @bar_width * @bar_spacing
|
79
79
|
# y
|
80
80
|
conv = []
|
81
|
-
conversion.get_left_y_right_y_scaled(
|
81
|
+
conversion.get_left_y_right_y_scaled(data_point, conv)
|
82
82
|
|
83
83
|
# create new bar
|
84
84
|
@d = @d.fill data_row[DATA_COLOR_INDEX]
|
85
85
|
@d = @d.rectangle(left_x, conv[0], right_x, conv[1])
|
86
86
|
|
87
87
|
# Calculate center based on bar_width and current row
|
88
|
-
label_center = @graph_left +
|
89
|
-
(@data.length * @bar_width * point_index) +
|
88
|
+
label_center = @graph_left +
|
89
|
+
(@data.length * @bar_width * point_index) +
|
90
90
|
(@data.length * @bar_width / 2.0)
|
91
91
|
|
92
92
|
# Subtract half a bar width to center left if requested
|
93
93
|
draw_label(label_center - (@center_labels_over_point ? @bar_width / 2.0 : 0.0), point_index)
|
94
94
|
if @show_labels_for_bar_values
|
95
95
|
val = (@label_formatting || '%.2f') % @norm_data[row_index][3][point_index]
|
96
|
-
draw_value_label(left_x + (right_x - left_x)/2, conv[0]-30, val.commify, true)
|
96
|
+
draw_value_label(left_x + (right_x - left_x) / 2, conv[0] - 30, val.commify, true)
|
97
97
|
end
|
98
98
|
end
|
99
|
-
|
100
99
|
end
|
101
100
|
|
102
101
|
# Draw the last label if requested
|
data/lib/gruff/bar_conversion.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
##
|
2
2
|
# Original Author: David Stokar
|
3
3
|
#
|
4
|
-
#
|
4
|
+
# This class perfoms the y coordinats conversion for the bar class.
|
5
5
|
#
|
6
|
-
#
|
6
|
+
# There are three cases:
|
7
7
|
#
|
8
8
|
# 1. Bars all go from zero in positive direction
|
9
|
-
#
|
10
|
-
#
|
9
|
+
# 2. Bars all go from zero to negative direction
|
10
|
+
# 3. Bars either go from zero to positive or from zero to negative
|
11
11
|
#
|
12
12
|
class Gruff::BarConversion
|
13
13
|
attr_writer :mode
|
@@ -21,21 +21,21 @@ class Gruff::BarConversion
|
|
21
21
|
case @mode
|
22
22
|
when 1 then # Case one
|
23
23
|
# minimum value >= 0 ( only positiv values )
|
24
|
-
result[0] = @graph_top + @graph_height*(1 - data_point) + 1
|
24
|
+
result[0] = @graph_top + @graph_height * (1 - data_point) + 1
|
25
25
|
result[1] = @graph_top + @graph_height - 1
|
26
26
|
when 2 then # Case two
|
27
27
|
# only negativ values
|
28
28
|
result[0] = @graph_top + 1
|
29
|
-
result[1] = @graph_top + @graph_height*(1 - data_point) - 1
|
29
|
+
result[1] = @graph_top + @graph_height * (1 - data_point) - 1
|
30
30
|
when 3 then # Case three
|
31
31
|
# positiv and negativ values
|
32
|
-
val = data_point
|
32
|
+
val = data_point - @minimum_value / @spread
|
33
33
|
if data_point >= @zero
|
34
|
-
result[0] = @graph_top + @graph_height*(1 - (val
|
35
|
-
result[1] = @graph_top + @graph_height*(1 - @zero) - 1
|
34
|
+
result[0] = @graph_top + @graph_height * (1 - (val - @zero)) + 1
|
35
|
+
result[1] = @graph_top + @graph_height * (1 - @zero) - 1
|
36
36
|
else
|
37
|
-
result[0] = @graph_top + @graph_height*(1 - (val
|
38
|
-
result[1] = @graph_top + @graph_height*(1 - @zero) - 1
|
37
|
+
result[0] = @graph_top + @graph_height * (1 - (val - @zero)) + 1
|
38
|
+
result[1] = @graph_top + @graph_height * (1 - @zero) - 1
|
39
39
|
end
|
40
40
|
else
|
41
41
|
result[0] = 0.0
|
data/lib/gruff/base.rb
CHANGED
@@ -120,7 +120,7 @@ module Gruff
|
|
120
120
|
|
121
121
|
# Same as font but for the title.
|
122
122
|
attr_accessor :title_font
|
123
|
-
|
123
|
+
|
124
124
|
# Specifies whether to draw the title bolded or not.
|
125
125
|
attr_accessor :bold_title
|
126
126
|
|
@@ -216,7 +216,7 @@ module Gruff
|
|
216
216
|
#
|
217
217
|
# Looks for Bitstream Vera as the default font. Expects an environment var
|
218
218
|
# of MAGICK_FONT_PATH to be set. (Uses RMagick's default font otherwise.)
|
219
|
-
def initialize(target_width=DEFAULT_TARGET_WIDTH)
|
219
|
+
def initialize(target_width = DEFAULT_TARGET_WIDTH)
|
220
220
|
if Numeric === target_width
|
221
221
|
@columns = target_width.to_f
|
222
222
|
@rows = target_width.to_f * 0.75
|
@@ -241,7 +241,7 @@ module Gruff
|
|
241
241
|
def initialize_ivars
|
242
242
|
# Internal for calculations
|
243
243
|
@raw_columns = 800.0
|
244
|
-
@raw_rows = 800.0 * (@rows
|
244
|
+
@raw_rows = 800.0 * (@rows / @columns)
|
245
245
|
@column_count = 0
|
246
246
|
@data = Array.new
|
247
247
|
@marker_count = nil
|
@@ -326,7 +326,7 @@ module Gruff
|
|
326
326
|
#
|
327
327
|
# Example:
|
328
328
|
# replace_colors ['#cc99cc', '#d9e043', '#34d8a2']
|
329
|
-
def replace_colors(color_list=[])
|
329
|
+
def replace_colors(color_list = [])
|
330
330
|
@colors = color_list
|
331
331
|
@color_index = 0
|
332
332
|
end
|
@@ -348,13 +348,13 @@ module Gruff
|
|
348
348
|
reset_themes
|
349
349
|
|
350
350
|
defaults = {
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
351
|
+
colors: %w[black white],
|
352
|
+
additional_line_colors: [],
|
353
|
+
marker_color: 'white',
|
354
|
+
marker_shadow_color: nil,
|
355
|
+
font_color: 'black',
|
356
|
+
background_colors: nil,
|
357
|
+
background_image: nil
|
358
358
|
}
|
359
359
|
@theme_options = defaults.merge options
|
360
360
|
|
@@ -405,7 +405,7 @@ module Gruff
|
|
405
405
|
#
|
406
406
|
# Example:
|
407
407
|
# data("Bart S.", [95, 45, 78, 89, 88, 76], '#ffcc00')
|
408
|
-
def data(name, data_points=[], color=nil)
|
408
|
+
def data(name, data_points = [], color = nil)
|
409
409
|
data_points = Array(data_points) # make sure it's an array
|
410
410
|
@data << [name, data_points, color]
|
411
411
|
# Set column count if this is larger than previous counts
|
@@ -434,21 +434,20 @@ module Gruff
|
|
434
434
|
#
|
435
435
|
# Example:
|
436
436
|
# write('graphs/my_pretty_graph.png')
|
437
|
-
def write(filename='graph.png')
|
437
|
+
def write(filename = 'graph.png')
|
438
438
|
draw
|
439
439
|
@base_image.write(filename)
|
440
440
|
end
|
441
441
|
|
442
442
|
# Return the graph as a rendered binary blob.
|
443
|
-
def to_blob(fileformat='PNG')
|
443
|
+
def to_blob(fileformat = 'PNG')
|
444
444
|
draw
|
445
445
|
@base_image.to_blob do
|
446
446
|
self.format = fileformat
|
447
447
|
end
|
448
448
|
end
|
449
449
|
|
450
|
-
|
451
|
-
protected
|
450
|
+
protected
|
452
451
|
|
453
452
|
# Overridden by subclasses to do the actual plotting of the graph.
|
454
453
|
#
|
@@ -501,7 +500,7 @@ module Gruff
|
|
501
500
|
end
|
502
501
|
|
503
502
|
# Make copy of data with values scaled between 0-100
|
504
|
-
def normalize(force=false)
|
503
|
+
def normalize(force = false)
|
505
504
|
if @norm_data.nil? || force
|
506
505
|
@norm_data = []
|
507
506
|
return unless @has_data
|
@@ -541,9 +540,9 @@ module Gruff
|
|
541
540
|
calculate_caps_height(@legend_font_size)
|
542
541
|
|
543
542
|
if @hide_line_markers
|
544
|
-
|
545
|
-
|
546
|
-
|
543
|
+
@graph_left = @left_margin
|
544
|
+
@graph_right_margin = @right_margin
|
545
|
+
@graph_bottom_margin = @bottom_margin
|
547
546
|
else
|
548
547
|
if @has_left_labels
|
549
548
|
longest_left_label_width = calculate_width(@marker_font_size,
|
@@ -565,7 +564,7 @@ module Gruff
|
|
565
564
|
# Make space for half the width of the rightmost column label.
|
566
565
|
# Might be greater than the number of columns if between-style bar markers are used.
|
567
566
|
last_label = @labels.keys.sort.last.to_i
|
568
|
-
extra_room_for_long_label = (last_label >= (@column_count-1) && @center_labels_over_point) ?
|
567
|
+
extra_room_for_long_label = (last_label >= (@column_count - 1) && @center_labels_over_point) ?
|
569
568
|
calculate_width(@marker_font_size, @labels[last_label]) / 2.0 :
|
570
569
|
0
|
571
570
|
@graph_right_margin = @right_margin + extra_room_for_long_label
|
@@ -762,7 +761,6 @@ module Gruff
|
|
762
761
|
@top_margin + title_margin + @title_caps_height)
|
763
762
|
|
764
763
|
@legend_labels.each_with_index do |legend_label, index|
|
765
|
-
|
766
764
|
# Draw label
|
767
765
|
@d.fill = @font_color
|
768
766
|
@d.font = @font if @font
|
@@ -810,13 +808,13 @@ module Gruff
|
|
810
808
|
|
811
809
|
# Draws a title on the graph.
|
812
810
|
def draw_title
|
813
|
-
return if
|
811
|
+
return if @hide_title || @title.nil?
|
814
812
|
|
815
813
|
@d.fill = @font_color
|
816
814
|
@d.font = @title_font || @font if @title_font || @font
|
817
815
|
@d.stroke('transparent')
|
818
816
|
@d.pointsize = scale_fontsize(@title_font_size)
|
819
|
-
@d.font_weight =
|
817
|
+
@d.font_weight = @bold_title ? BoldWeight : NormalWeight
|
820
818
|
@d.gravity = NorthGravity
|
821
819
|
@d = @d.annotate_scaled(@base_image,
|
822
820
|
@raw_columns, 1.0,
|
@@ -846,10 +844,10 @@ module Gruff
|
|
846
844
|
if @label_truncation_style == :trailing_dots
|
847
845
|
if @label_max_size > 3
|
848
846
|
# 4 because '...' takes up 3 chars
|
849
|
-
label_text = "#{label_text[0
|
847
|
+
label_text = "#{label_text[0..(@label_max_size - 4)]}..."
|
850
848
|
end
|
851
849
|
else # @label_truncation_style is :absolute (default)
|
852
|
-
label_text = label_text[0
|
850
|
+
label_text = label_text[0..(@label_max_size - 1)]
|
853
851
|
end
|
854
852
|
|
855
853
|
end
|
@@ -872,7 +870,7 @@ module Gruff
|
|
872
870
|
end
|
873
871
|
|
874
872
|
# Draws the data value over the data point in bar graphs
|
875
|
-
def draw_value_label(x_offset, y_offset, data_point, bar_value=false)
|
873
|
+
def draw_value_label(x_offset, y_offset, data_point, bar_value = false)
|
876
874
|
return if @hide_line_markers && !bar_value
|
877
875
|
|
878
876
|
#y_offset = @graph_bottom + LABEL_MARGIN
|
@@ -900,7 +898,7 @@ module Gruff
|
|
900
898
|
@d.pointsize = scale_fontsize(80)
|
901
899
|
@d.gravity = CenterGravity
|
902
900
|
@d = @d.annotate_scaled(@base_image,
|
903
|
-
@raw_columns, @raw_rows/2.0,
|
901
|
+
@raw_columns, @raw_rows / 2.0,
|
904
902
|
0, 10,
|
905
903
|
@no_data_message, @scale)
|
906
904
|
end
|
@@ -996,6 +994,7 @@ module Gruff
|
|
996
994
|
|
997
995
|
def significant(i) # :nodoc:
|
998
996
|
return 1.0 if i == 0 # Keep from going into infinite loop
|
997
|
+
|
999
998
|
inc = BigDecimal(i.to_s)
|
1000
999
|
factor = BigDecimal('1.0')
|
1001
1000
|
while inc < 10
|
@@ -1030,7 +1029,7 @@ module Gruff
|
|
1030
1029
|
# correctly in the drawn graph.
|
1031
1030
|
def sort_norm_data
|
1032
1031
|
@norm_data =
|
1033
|
-
|
1032
|
+
@norm_data.sort_by { |a| -a[DATA_VALUES_INDEX].inject(0) { |sum, num| sum + num.to_f } }
|
1034
1033
|
end
|
1035
1034
|
|
1036
1035
|
# Used by StackedBar and child classes.
|
@@ -1047,7 +1046,7 @@ module Gruff
|
|
1047
1046
|
end
|
1048
1047
|
|
1049
1048
|
# @maximum_value = 0
|
1050
|
-
max_hash.
|
1049
|
+
max_hash.each_key do |key|
|
1051
1050
|
@maximum_value = max_hash[key] if max_hash[key] > @maximum_value
|
1052
1051
|
end
|
1053
1052
|
@minimum_value = 0
|
@@ -1063,7 +1062,7 @@ module Gruff
|
|
1063
1062
|
end
|
1064
1063
|
end
|
1065
1064
|
|
1066
|
-
|
1065
|
+
private
|
1067
1066
|
|
1068
1067
|
# Takes a block and draws it if DEBUG is true.
|
1069
1068
|
#
|
@@ -1100,7 +1099,7 @@ module Gruff
|
|
1100
1099
|
else
|
1101
1100
|
value.to_s
|
1102
1101
|
end
|
1103
|
-
elsif (@spread.to_f % (@marker_count.to_f==0 ? 1 : @marker_count.to_f) == 0) || !@y_axis_increment.nil?
|
1102
|
+
elsif (@spread.to_f % (@marker_count.to_f == 0 ? 1 : @marker_count.to_f) == 0) || !@y_axis_increment.nil?
|
1104
1103
|
value.to_i.to_s
|
1105
1104
|
elsif @spread > 10.0
|
1106
1105
|
sprintf('%0i', value)
|
@@ -1132,6 +1131,7 @@ module Gruff
|
|
1132
1131
|
# scaling will handle.
|
1133
1132
|
def calculate_width(font_size, text)
|
1134
1133
|
return 0 if text.nil?
|
1134
|
+
|
1135
1135
|
@d.pointsize = font_size
|
1136
1136
|
@d.font = @font if @font
|
1137
1137
|
@d.get_type_metrics(@base_image, text.to_s).width
|
@@ -1139,12 +1139,12 @@ module Gruff
|
|
1139
1139
|
|
1140
1140
|
# Used for degree => radian conversions
|
1141
1141
|
def deg2rad(angle)
|
1142
|
-
angle * (Math::PI/180.0)
|
1142
|
+
angle * (Math::PI / 180.0)
|
1143
1143
|
end
|
1144
1144
|
|
1145
1145
|
end # Gruff::Base
|
1146
1146
|
|
1147
|
-
class IncorrectNumberOfDatasetsException < StandardError
|
1147
|
+
class IncorrectNumberOfDatasetsException < StandardError
|
1148
1148
|
end
|
1149
1149
|
|
1150
1150
|
end # Gruff
|
@@ -1169,7 +1169,7 @@ module Magick
|
|
1169
1169
|
# Remove this method as soon as RMagick4J Issue #16 is fixed.
|
1170
1170
|
# https://github.com/Serabe/RMagick4J/issues/16
|
1171
1171
|
def fill=(fill)
|
1172
|
-
fill = {:
|
1172
|
+
fill = { white: '#FFFFFF' }[fill.to_sym] || fill
|
1173
1173
|
@draw.fill = Magick4J.ColorDatabase.query_default(fill)
|
1174
1174
|
self
|
1175
1175
|
end
|
@@ -1182,7 +1182,7 @@ end # Magick
|
|
1182
1182
|
|
1183
1183
|
class String
|
1184
1184
|
#Taken from http://codesnippets.joyent.com/posts/show/330
|
1185
|
-
def commify(delimiter=',')
|
1185
|
+
def commify(delimiter = ',')
|
1186
1186
|
self.gsub(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{delimiter}")
|
1187
1187
|
end
|
1188
1188
|
end
|
data/lib/gruff/bezier.rb
CHANGED
@@ -27,7 +27,7 @@ class Gruff::Bezier < Gruff::Base
|
|
27
27
|
|
28
28
|
draw_label(new_x, index)
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
@d = @d.fill_opacity 0.0
|
32
32
|
@d = @d.stroke data_row[DATA_COLOR_INDEX]
|
33
33
|
@d = @d.stroke_width clip_value_if_greater_than(@columns / (@norm_data.first[1].size * 4), 5.0)
|
@@ -41,6 +41,5 @@ class Gruff::Bezier < Gruff::Base
|
|
41
41
|
|
42
42
|
@d.draw(@base_image)
|
43
43
|
end
|
44
|
-
|
45
44
|
|
46
45
|
end
|
data/lib/gruff/bullet.rb
CHANGED
@@ -4,7 +4,7 @@ require 'gruff/themes'
|
|
4
4
|
# http://en.wikipedia.org/wiki/Bullet_graph
|
5
5
|
class Gruff::Bullet < Gruff::Base
|
6
6
|
|
7
|
-
def initialize(target_width="400x40")
|
7
|
+
def initialize(target_width = "400x40")
|
8
8
|
if not Numeric === target_width
|
9
9
|
geometric_width, geometric_height = target_width.split('x')
|
10
10
|
@columns = geometric_width.to_f
|
@@ -21,7 +21,7 @@ class Gruff::Bullet < Gruff::Base
|
|
21
21
|
@title_font_size = 20
|
22
22
|
end
|
23
23
|
|
24
|
-
def data(value, maximum_value, options={})
|
24
|
+
def data(value, maximum_value, options = {})
|
25
25
|
@value = value.to_f
|
26
26
|
@maximum_value = maximum_value.to_f
|
27
27
|
@options = options
|
@@ -68,8 +68,9 @@ class Gruff::Bullet < Gruff::Base
|
|
68
68
|
|
69
69
|
[:high, :low].each_with_index do |indicator, index|
|
70
70
|
next unless @options.has_key?(indicator)
|
71
|
+
|
71
72
|
@d = @d.fill @colors[index + 1]
|
72
|
-
indicator_width_x
|
73
|
+
indicator_width_x = @graph_left + @graph_width * (@options[indicator] / @maximum_value)
|
73
74
|
@d = @d.rectangle(@graph_left, 0, indicator_width_x, @graph_height)
|
74
75
|
end
|
75
76
|
|
@@ -99,13 +100,9 @@ class Gruff::Bullet < Gruff::Base
|
|
99
100
|
@d.font_weight = NormalWeight
|
100
101
|
@d.pointsize = scale_fontsize(@title_font_size)
|
101
102
|
@d.gravity = NorthWestGravity
|
102
|
-
@d = @d.annotate_scaled(
|
103
|
-
@base_image,
|
104
|
-
|
105
|
-
@font_height/2, @font_height/2,
|
106
|
-
@title,
|
107
|
-
@scale
|
108
|
-
])
|
103
|
+
@d = @d.annotate_scaled(
|
104
|
+
@base_image, 1.0, 1.0, @font_height / 2, @font_height / 2, @title, @scale
|
105
|
+
)
|
109
106
|
end
|
110
107
|
|
111
108
|
end
|