function StemLeaf( options ) {
	var opts;
	var err;
	if ( !(this instanceof StemLeaf) ) {
		if ( arguments.length ) {
			return new StemLeaf( options );
		}
		return new StemLeaf();
	}
	if ( arguments.length ) {
		opts = options;
		err = validate( opts );
		if ( err ) {
			throw err;
		}
	} else {
		opts = {};
	}

	defineProperty( this, '_x', {
		'configurable': false,
		'enumerable': false,
		'writable': true,
		'value': []
	});
	defineProperty( this, '_xValue', {
		'configurable': false,
		'enumerable': false,
		'writable': true,
		'value': xValue
	});
	defineProperty( this, '_y', {
		'configurable': false,
		'enumerable': false,
		'writable': true,
		'value': []
	});
	defineProperty( this, '_yValue', {
		'configurable': false,
		'enumerable': false,
		'writable': true,
		'value': yValue
	});
	defineProperty( this, '_leafDigits', {
		'configurable': false,
		'enumerable': false,
		'writable': true,
		'value': 1
	});

	if ( opts.xValue !== void 0 ) {
		this._xValue = opts.xValue;
	}
	if ( opts.yValue !== void 0 ) {
		this._yValue = opts.yValue;
	}
	if ( opts.x !== void 0 ) {
		this._x = formatData( opts.x, this._yValue );
	}
	if ( opts.y !== void 0 ) {
		this._y = formatData( opts.y, this._yValue );
	}
	if ( opts.leafDigits !== void 0 ) {
		this._leafDigits = opts.leafDigits;
	}
	return this;
}
Creates a stem-and-leaf plot.

@constructor
@param {Options} [options] - steam-and-leaf options
@param {(Array|TypedArray)} [options.x] - first input data
@param {(Array|TypedArray)} [options.y] - second input data
@param {Function} [options.xValue] - x-value accessor
@param {Function} [options.yValue] - y-value accessor
@param {PositiveInteger} [options.leafDigits=1] - number of digits to display as leafs
@returns {StemLeaf} chart instance