Method: Gruff::Dot#draw

Defined in:
lib/gruff/dot.rb

#drawObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/gruff/dot.rb', line 9

def draw
  @has_left_labels = true
  super

  return unless @has_data

  # Setup spacing.
  #
  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
  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)
      y_pos = @graph_top + (@items_width * point_index) + padding + (@items_width.to_f/2.0).round

      if row_index == 0
        @d = @d.stroke(@marker_color)
        @d = @d.fill(@marker_color)
        @d = @d.stroke_width 1.0
        @d = @d.stroke_opacity 0.1
        @d = @d.fill_opacity 0.1
        @d = @d.line(@graph_left, y_pos, @graph_left + @graph_width, y_pos)
        @d = @d.fill_opacity 1
      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)

      draw_label(y_pos, point_index)
    end

  end

  @d.draw(@base_image)
end