Esempio n. 1
0
        protected override void Postprocess(IDictionary <object, HistogramSeries> seriesSet)
        {
            if (_data == null || _data.Count == 0)
            {
                return;
            }

            _intervals = GetHistogramInterval(_data.Min(), _data.Max(), _data.Count);

            foreach (var entry in seriesSet)
            {
                var series = entry.Value;
                if (series.Items.Count > 0)
                {
                    throw new ArgumentException("-Data and the other data items cannot be specify at the same time");
                }

                // Grouping is not supported in HistogramSeries
                var bins = HistogramSeriesHelpers.Collect(_data, _intervals, _normalize);

                var s = _intervals.AdjustedLower;
                for (var i = 0; i < _intervals.BinCount; ++i)
                {
                    var item = new HistogramItem(s, s + _intervals.BinWidth, bins[i] * _intervals.BinWidth);
                    series.Items.Add(item);
                    s += _intervals.BinWidth;
                }
            }
        }
Esempio n. 2
0
 protected void SetCategories(HistogramInterval h)
 {
     _categories = new string[h.BinCount];
     for (var i = 0; i < h.BinCount; ++i)
     {
         _categories[i] = $"{Math.Round(h.AdjustedLower + i * h.BinWidth, 5)} - {Math.Round(h.AdjustedLower + (i + 1) * h.BinWidth, 5)}";
     }
 }
        // Histogram

        private static Tuple <int[], int> CollectHistogram(IList <MetaNum> data, HistogramInterval intervals)
        {
            var result = new int[intervals.BinCount];
            var total  = 0;

            foreach (var value in data)
            {
                if (TypeTrait <MetaNum> .IsNaN(value))
                {
                    continue;
                }

                var bin = (int)Math.Floor(((double)value - intervals.AdjustedLower) / intervals.BinWidth);
                ++result[bin];
                ++total;
            }

            return(Tuple.Create(result, total));
        }