# 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
    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)

        # Calculate center based on item_width and current row
        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