GraphPlotter = function(getXValueFn, getYValueFn, focusInfoConfig) {
  var containerEl = document.getElementById('chart-container');
  var minWidth = 500;
  this.totalWidth = Math.max(minWidth, containerEl.scrollWidth - 100);
  this.totalHeight = 270;
  this.margin = {top: 0, right: 20, bottom: 30, left: 50};

  this.x_ = d3.time.scale().range([0, this.getWidth_()]);
  this.y_ = d3.scale.linear().range([this.getHeight_(), 0]);

  this.getXValue_ = getXValueFn;
  this.getYValue_ = getYValueFn;
  this.focusInfoConfig = focusInfoConfig;
  this.getScaledXValue_ = (function(d) {
    return this.x_(this.getXValue_(d));
  }.bind(this));
  this.getScaledYValue_ = (function(d) {
    return this.y_(this.getYValue_(d));
  }.bind(this));
}
@constructor

@param {!Function} getXValueFn The function to use for extracting the x-axis
    value from a data point.
@param {!Function} getYValueFn The function to use for extracting the y-axis
    value from a data point.
@param {!Array<!Object>} focusInfoConfig Specifies what info to be displayed
    in the focus info banner.