Beispiel #1
0
	public void Recalculate(List<GA_DataPoint> data,int numChunks,HistogramScale scale)
	{
		GA.Log("GameAnalytics: Recalculating Histogram");
		
		min = Mathf.Infinity;
		max = 0;
		//if we have less data samples than numChunks, we need a smaller array
		List<int> sampleCount = new List<int>();
		//Find range
		foreach(GA_DataPoint c in data)
		{
			if(c.count<min)
				min = c.count;		
			if(c.count>max)
				max = c.count;	
			
			if(!sampleCount.Contains((int)c.count))
				sampleCount.Add((int)c.count);
		}
		RealDataMin = min;
		RealDataMax = max;
		
		//Calculate bucket sizes
		float interval = max-min;

		numChunks = Mathf.Min(sampleCount.Count,numChunks);
		Data = new float[numChunks];
		
		for(int i=0; i < numChunks; i++)
			Data[i]=0;
		
		//Put data into buckets
		foreach(GA_DataPoint p in data)
		{
			int c = (int)Mathf.FloorToInt(((p.count-min)/(interval))*numChunks);
			c = Mathf.Clamp(c,0,numChunks-1);
			
			Data[c]+=1f;

		}
		
		//Normalize data
		float countMax=-Mathf.Infinity,countMin=Mathf.Infinity,scaleValue=0;
		foreach(float d in Data)
		{
			
			//if(scale == HistogramScale.Linear)
				scaleValue = d;
			//GA_TODO: Enable log scale.
			//else 
			//	scaleValue = Mathf.Log(d);
			
			if(scaleValue<countMin)
				countMin = scaleValue;
			if(scaleValue>countMax)
				countMax = scaleValue;
			
		}
		float normValue = 0;
		for(int i=0; i < Data.Length; i++)
		{
			if(scale == HistogramScale.Linear)
				normValue = Data[i];
			else
				normValue = Mathf.Log(Data[i]);
			
			Data[i] = (normValue-countMin)/(countMax-countMin);
		}
	}
Beispiel #2
0
    public void Recalculate(List <GA_DataPoint> data, int numChunks, HistogramScale scale)
    {
        GA.Log("GameAnalytics: Recalculating Histogram");

        min = Mathf.Infinity;
        max = 0;
        //if we have less data samples than numChunks, we need a smaller array
        List <int> sampleCount = new List <int>();

        //Find range
        foreach (GA_DataPoint c in data)
        {
            if (c.count < min)
            {
                min = c.count;
            }
            if (c.count > max)
            {
                max = c.count;
            }

            if (!sampleCount.Contains((int)c.count))
            {
                sampleCount.Add((int)c.count);
            }
        }
        RealDataMin = min;
        RealDataMax = max;

        //Calculate bucket sizes
        float interval = max - min;

        numChunks = Mathf.Min(sampleCount.Count, numChunks);
        Data      = new float[numChunks];

        for (int i = 0; i < numChunks; i++)
        {
            Data[i] = 0;
        }

        //Put data into buckets
        foreach (GA_DataPoint p in data)
        {
            int c = (int)Mathf.FloorToInt(((p.count - min) / (interval)) * numChunks);
            c = Mathf.Clamp(c, 0, numChunks - 1);

            Data[c] += 1f;
        }

        //Normalize data
        float countMax = -Mathf.Infinity, countMin = Mathf.Infinity, scaleValue = 0;

        foreach (float d in Data)
        {
            //if(scale == HistogramScale.Linear)
            scaleValue = d;
            //GA_TODO: Enable log scale.
            //else
            //	scaleValue = Mathf.Log(d);

            if (scaleValue < countMin)
            {
                countMin = scaleValue;
            }
            if (scaleValue > countMax)
            {
                countMax = scaleValue;
            }
        }
        float normValue = 0;

        for (int i = 0; i < Data.Length; i++)
        {
            if (scale == HistogramScale.Linear)
            {
                normValue = Data[i];
            }
            else
            {
                normValue = Mathf.Log(Data[i]);
            }

            Data[i] = (normValue - countMin) / (countMax - countMin);
        }
    }