Sha256: 9474ee691c46d6fcdd23bbc34988c20449ea002c1600864fe9d2b797210955fc
Contents?: true
Size: 1.66 KB
Versions: 1
Compression:
Stored size: 1.66 KB
Contents
require File.dirname(__FILE__) + '/base' class Gruff::StackedBar < Gruff::Base def draw super return unless @has_data # Setup spacing. # # Columns sit stacked. spacing_factor = 0.9 @bar_width = @graph_width / @column_count.to_f @d = @d.stroke_opacity 0.0 height = Array.new(@column_count, 0) @norm_data.each_with_index do |data_row, row_index| @d = @d.fill current_color data_row[1].each_with_index do |data_point, point_index| # Use incremented x and scaled y left_x = @graph_left + (@bar_width * point_index) left_y = @graph_top + (@graph_height - data_point * @graph_height - height[point_index]) + 1 right_x = left_x + @bar_width * spacing_factor right_y = @graph_top + @graph_height - height[point_index] - 1 # update the total height of the current stacked bar height[point_index] += (data_point * @graph_height - 2) @d = @d.rectangle(left_x, left_y, right_x, right_y) # Calculate center based on bar_width and current row label_center = @graph_left + (@bar_width * point_index) + (@bar_width * spacing_factor / 2.0) draw_label(label_center, point_index) end increment_color() end @d.draw(@base_image) end protected def larger_than_max?(data_point, index=0) max(data_point, index) > @maximum_value end def max(data_point, index) @data.inject(0) {|sum, item| sum + item[1][index]} end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
gruff-0.0.7 | lib/gruff/stacked_bar.rb |