# 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