draw_data (SVG::Graph::Bar)

    # File temp/Graph/Bar.rb, line 98
          def draw_data
            minvalue = min_value
            fieldwidth = field_width

            unit_size =  (@graph_height.to_f - font_size*2*top_font) /
                              (get_y_labels.max - get_y_labels.min)
            bargap = bar_gap ? (fieldwidth < 10 ? fieldwidth / 2 : 10) : 0

            bar_width = fieldwidth - bargap
            bar_width /= @data.length if stack == :side
            x_mod = (@graph_width-bargap)/2 - (stack==:side ? bar_width/2 : 0)

            bottom = @graph_height

            field_count = 0
            @config[:fields].each_index { |i|
              dataset_count = 0
              for dataset in @data

                # cases (assume 0 = +ve):
                #   value  min  length
                #    +ve   +ve  value - min
                #    +ve   -ve  value - 0
                #    -ve   -ve  value.abs - 0

                value = dataset[:data][i]

                left = (fieldwidth * field_count)

                length = (value.abs - (minvalue > 0 ? minvalue : 0)) * unit_size
                # top is 0 if value is negative
                top = bottom - (((value < 0 ? 0 : value) - minvalue) * unit_size)
                left += bar_width * dataset_count if stack == :side

                @graph.add_element( "rect", {
                  "x" => left.to_s,
                  "y" => top.to_s,
                  "width" => bar_width.to_s,
                  "height" => length.to_s,
                  "class" => "fill#{dataset_count+1}"
                })

                make_datapoint_text(left + bar_width/2.0, top - 6, value.to_s)
                dataset_count += 1
              end
              field_count += 1
            }
          end