def draw
@has_left_labels = true
super
return unless @has_data
spacing_factor = 1.0
@items_width = @graph_height / @column_count.to_f
@item_width = @items_width * spacing_factor / @norm_data.size
@d = @d.stroke_opacity 0.0
height = Array.new(@column_count, 0)
length = Array.new(@column_count, @graph_left)
padding = (@items_width * (1 - spacing_factor)) / 2
@norm_data.each_with_index do |data_row, row_index|
data_row[DATA_VALUES_INDEX].each_with_index do |data_point, point_index|
x_pos = @graph_left + (data_point * @graph_width) - (@item_width.to_f/6.0).round
y_pos = @graph_top + (@items_width * point_index) + padding + (@item_width.to_f/2.0).round
if row_index == 0
@d = @d.stroke(@marker_color)
@d = @d.stroke_width 1.0
@d = @d.opacity 0.1
@d = @d.line(@graph_left, y_pos, @graph_left + @graph_width, y_pos)
end
@d = @d.fill data_row[DATA_COLOR_INDEX]
@d = @d.stroke('transparent')
@d = @d.circle(x_pos, y_pos, x_pos + (@item_width.to_f/3.0).round, y_pos)
label_center = @graph_top + (@items_width * point_index + @items_width / 2) + padding
draw_label(label_center, point_index)
end
end
@d.draw(@base_image)
end