lib/gruff/bar.rb in gruff-0.2.3 vs lib/gruff/bar.rb in gruff-0.2.4
- old
+ new
@@ -3,10 +3,15 @@
require File.dirname(__FILE__) + '/bar_conversion'
class Gruff::Bar < Gruff::Base
def draw
+ # Labels will be centered over the left of the bar if
+ # there are more labels than columns. This is basically the same
+ # as where it would be for a line graph.
+ @center_labels_over_point = (@labels.keys.length > @column_count ? true : false)
+
super
return unless @has_data
# Setup spacing.
#
@@ -19,14 +24,10 @@
# Setup the BarConversion Object
conversion = Gruff::BarConversion.new()
conversion.graph_height = @graph_height
conversion.graph_top = @graph_top
- # Labels will be centered over the left of the bar if
- # there are more labels than columns.
- center_labels_left = (@labels.keys.length > @column_count ? true : false)
-
# Set up the right mode [1,2,3] see BarConversion for further explanation
if @minimum_value >= 0 then
# all bars go from zero to positiv
conversion.mode = 1
else
@@ -42,11 +43,10 @@
end
end
# iterate over all normalised data
@norm_data.each_with_index do |data_row, row_index|
- @d = @d.fill data_row[DATA_COLOR_INDEX]
data_row[1].each_with_index do |data_point, point_index|
# Use incremented x and scaled y
# x
left_x = @graph_left + (@bar_width * (row_index + point_index + ((@data.length - 1) * point_index)))
@@ -54,23 +54,24 @@
# y
conv = []
conversion.getLeftYRightYscaled( data_point, conv )
# create new bar
+ @d = @d.fill data_row[DATA_COLOR_INDEX]
@d = @d.rectangle(left_x, conv[0], right_x, conv[1])
# Calculate center based on bar_width and current row
label_center = @graph_left +
(@data.length * @bar_width * point_index) +
(@data.length * @bar_width / 2.0)
# Subtract half a bar width to center left if requested
- draw_label(label_center - (center_labels_left ? @bar_width / 2.0 : 0.0), point_index)
+ draw_label(label_center - (@center_labels_over_point ? @bar_width / 2.0 : 0.0), point_index)
end
end
# Draw the last label if requested
- draw_label(@graph_right, @column_count) if center_labels_left
+ draw_label(@graph_right, @column_count) if @center_labels_over_point
@d.draw(@base_image)
end
end