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; } } }
public void TestBinWidth() { var data = new[] { 11, 22, 33, 44, 55 }; var min = data.Min(); var max = data.Max(); var binCount = HistogramSeriesHelpers.GetBinCount(min, max, data.Length); var h = HistogramSeriesHelpers.GetHistogramIntervalFromBinCount(min, max, binCount); Assert.AreEqual(3, binCount); Assert.AreEqual(20, h.BinWidth); Assert.AreEqual(0, h.AdjustedLower); Assert.AreEqual(60, h.AdjustedUpper); }
protected HistogramInterval GetHistogramInterval(double min, double max, int dataCount) { HistogramInterval h; if (double.IsNaN(_binWidth)) { if (_binCount == -1) { _binCount = HistogramSeriesHelpers.GetBinCount(min, max, dataCount); } h = HistogramSeriesHelpers.GetHistogramIntervalFromBinCount(min, max, _binCount); } else { h = HistogramSeriesHelpers.GetHistogramIntervalFromBinWidth(min, max, _binWidth); } return(h); }
protected override void Postprocess(IDictionary <object, ColumnSeries> seriesSet) { if (_data.Count == 0) { return; } var h = GetHistogramInterval(_data.Min(), _data.Max(), _data.Count); SetCategories(h); foreach (var entry in seriesSet) { var series = entry.Value; var bins = HistogramSeriesHelpers.Collect(_seriesData[series], h, _normalize); for (var i = 0; i < h.BinCount; ++i) { series.Items.Add(new ColumnItem(bins[i], i)); } } }