/// <summary>
        /// Overrides the requested axis range to include the width and height
        /// necessary for the bubbles.
        /// </summary>
        /// <param name="rangeAxis">The range axis.</param>
        /// <param name="range">The data range.</param>
        /// <returns>The requested axis range.</returns>
        protected override Range <IComparable> OverrideRequestedAxisRange(IRangeAxis rangeAxis, Range <IComparable> range)
        {
            if (ActiveDataPoints.Any())
            {
                if (rangeAxis == ActualIndependentRangeAxis)
                {
                    double smallestXCoordinate =
                        ActiveDataPoints
                        .Select(dataPoint =>
                                ActualIndependentRangeAxis.GetPlotAreaCoordinate((IComparable)dataPoint.IndependentValue) - dataPoint.ActualWidth)
                        .Min();

                    double largestXCoordinate =
                        ActiveDataPoints
                        .Select(dataPoint =>
                                ActualIndependentRangeAxis.GetPlotAreaCoordinate((IComparable)dataPoint.IndependentValue) + dataPoint.ActualWidth)
                        .Max();

                    return(new Range <IComparable>(
                               ActualIndependentRangeAxis.GetPlotAreaCoordinateValueRange(smallestXCoordinate).Minimum,
                               ActualIndependentRangeAxis.GetPlotAreaCoordinateValueRange(largestXCoordinate).Maximum));
                }
                else if (rangeAxis == ActualDependentRangeAxis)
                {
                    double smallestYCoordinate =
                        ActiveDataPoints
                        .Select(dataPoint =>
                                ActualDependentRangeAxis.GetPlotAreaCoordinate((IComparable)dataPoint.DependentValue) - dataPoint.ActualHeight)
                        .Min();

                    double largestYCoordinate =
                        ActiveDataPoints
                        .Select(dataPoint =>
                                ActualDependentRangeAxis.GetPlotAreaCoordinate((IComparable)dataPoint.DependentValue) + dataPoint.ActualHeight)
                        .Max();

                    return(new Range <IComparable>(
                               ActualDependentRangeAxis.GetPlotAreaCoordinateValueRange(smallestYCoordinate).Minimum,
                               ActualDependentRangeAxis.GetPlotAreaCoordinateValueRange(largestYCoordinate).Maximum));
                }
            }
            return(new Range <IComparable>());
        }