 				output.setYRange(NaN, NaN);
 				for (var i:int = 0; i < _columns.length; i++)
 				{
-					var stats:IColumnStatistics = WeaveAPI.StatisticsCache.getColumnStatistics(_columns[i]);
+					var stats:IColumnStatistics = _stats[_columns[i]];
 					output.includeCoords(i, stats.getMin());
 					output.includeCoords(i, stats.getMax());
 				}

			{
				var column:IAttributeColumn = _columns[i];
				if (normalize.value)
					output[i] = WeaveAPI.StatisticsCache.getColumnStatistics(column).getNorm(recordKey);
				else
					output[i] = column.getValueFromKey(recordKey, Number);
			}

		public const curvedLines:LinkableBoolean = registerLinkableChild(this, new LinkableBoolean(false));
		
		private var _columns:Array = [];
		private var _stats:Dictionary = new Dictionary(true);
		private static const tempBoundsArray:Array = []; // Array of reusable Bounds2D objects
		private static const tempPoint:Point = new Point(); // reusable Point object
		
