def draw
      # Maybe should be done in one of the following functions for more granularity.
      unless @has_data
        draw_no_data
        return
      end

      setup_data
      setup_drawing

      debug {
        # Outer margin
        @d.rectangle(@left_margin, @top_margin,
                     @raw_columns - @right_margin, @raw_rows - @bottom_margin)
        # Graph area box
        @d.rectangle(@graph_left, @graph_top, @graph_right, @graph_bottom)
      }

      draw_legend
      draw_line_markers
      draw_axis_labels
      draw_title
    end
def draw
      # Maybe should be done in one of the following functions for more granularity.
      unless @has_data
        draw_no_data
        return
      end

      setup_data
      setup_drawing

      debug {
        # Outer margin
        @d.rectangle(@left_margin, @top_margin,
                     @raw_columns - @right_margin, @raw_rows - @bottom_margin)
        # Graph area box
        @d.rectangle(@graph_left, @graph_top, @graph_right, @graph_bottom)
      }

      draw_legend
      draw_line_markers
      draw_axis_labels
      draw_title
    end
Overridden by subclasses to do the actual plotting of the graph.

 Subclasses should start by calling super() for this method.