⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 quantilescale.as

📁 用于flash/flex的 as3的 2D图形图像图表的动态生成
💻 AS
字号:
package flare.scale
{
	import flare.util.Maths;
	import flare.util.Strings;
	
	/**
	 * Scale that organizes data into discrete bins by quantiles.
	 * For example, the quantile scale can be used to create a discrete size
	 * encoding by statistically dividing the data into bins. Quantiles are
	 * computed using the <code>flare.util.Maths.quantile</code> method.
	 * 
	 * @see flare.util.Maths#quantile
	 */
	public class QuantileScale extends Scale
	{
		private var _quantiles:Array;
		
		/** @inheritDoc */
		public override function get flush():Boolean { return true; }
		public override function set flush(val:Boolean):void { /* nothing */ }
		
		/** @inheritDoc */
		public override function get min():Object { return _quantiles[0]; }
		
		/** @inheritDoc */
		public override function get max():Object { return _quantiles[_quantiles.length-1]; }
		
		// --------------------------------------------------------------------
		
		/**
		 * Creates a new QuantileScale.
		 * @param n the number of quantiles desired
		 * @param values the data values to organized into quantiles
		 * @param sorted flag indicating if the input values array is
		 *  already pre-sorted
		 * @param labelFormat the formatting pattern for value labels
		 */
		public function QuantileScale(n:int, values:Array,
			sorted:Boolean=false, labelFormat:String=Strings.DEFAULT_NUMBER)
		{
			_quantiles = (n<0 ? values : Maths.quantile(n, values, !sorted));
			this.labelFormat = labelFormat;
		}
		
		/** @inheritDoc */
		public override function get scaleType():String {
			return ScaleType.QUANTILE;
		}
		
		/** @inheritDoc */
		public override function clone():Scale
		{
			return new QuantileScale(-1, _quantiles, false, _format);
		}
		
		/** @inheritDoc */
		public override function interpolate(value:Object):Number
		{
			return Maths.invQuantileInterp(Number(value), _quantiles);
		}
		
		/** @inheritDoc */
		public override function lookup(f:Number):Object
		{
			return Maths.quantileInterp(f, _quantiles);
		}
		
		/** @inheritDoc */
		public override function values(num:int=-1):/*Number*/Array
		{
			var a:Array = new Array();
			var stride:int = num<0 ? 1 : 
				int(Math.max(1, Math.floor(_quantiles.length/num)));
			for (var i:uint=0; i<_quantiles.length; i += stride) {
				a.push(_quantiles[i]);
			}
			return a;
		}
		
	} // end of class QuantileScale
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -