private static Dictionary <string, IEnumerable <DataErrorPoint> > CreateDataPointCollection( StatisticsCollection statisticalQuantities) { var dictionary = new Dictionary <string, IEnumerable <DataErrorPoint> >(); foreach (var quantity in statisticalQuantities) { if (quantity.Value.Samples == null) { continue; } var samples = quantity.Value.Samples; var dataPoints = new List <DataErrorPoint>(); for (var i = 0; i < quantity.Value.SampleCount; i++) { var sample = samples[i]; var data = new DataPoint(i, sample.Mean); var error = new ScatterErrorPoint(i, sample.Mean, 0, sample.StandardError); var point = new DataErrorPoint { Data = data, Error = error }; dataPoints.Add(point); } //only add >0 point series if (dataPoints.Count > 0) { dictionary.Add(quantity.Key, dataPoints); } } return(dictionary); }
public void TestSeriesWithThisData(IEnumerable <double> x, IEnumerable <double> y, IEnumerable <double> xerr, IEnumerable <double> yerr) { Line line = new Line(LineType.Solid, LineThickness.Thin); LineThickness bar = LineThickness.Thin; LineThickness stopper = LineThickness.Normal; Marker marker = new Marker(MarkerType.Cross, MarkerSize.Normal, 1); ErrorSeries input = new ErrorSeries("asdf", Color.Blue, true, x, y, line, marker, bar, stopper, xerr, yerr, "", ""); var output = exporter.Export(input, AxisLabelCollection.Empty()).Result; Assert.NotNull(output); Assert.True(output is ScatterErrorSeries); ScatterErrorSeries series = (ScatterErrorSeries)output; int n = x.Count(); Assert.AreEqual(n, series.ItemsSource.Count()); IEnumerable <ScatterErrorPoint> points = series.ItemsSource.Cast <ScatterErrorPoint>(); bool havexError = xerr != null && xerr.Any(); bool haveyError = yerr != null && yerr.Any(); IEnumerator <double> enumeratorX = x.GetEnumerator(); IEnumerator <double> enumeratorY = y.GetEnumerator(); IEnumerator <ScatterErrorPoint> seriesEnumerator = points.GetEnumerator(); IEnumerator <double> enumeratorXErr = xerr?.GetEnumerator(); IEnumerator <double> enumeratorYErr = yerr?.GetEnumerator(); while (enumeratorX.MoveNext() && enumeratorY.MoveNext() && seriesEnumerator.MoveNext() && (!havexError || enumeratorXErr.MoveNext()) && (!haveyError || enumeratorYErr.MoveNext())) { ScatterErrorPoint point = seriesEnumerator.Current; Assert.AreEqual(enumeratorX.Current, point.X); Assert.AreEqual(enumeratorY.Current, point.Y); double expectedXerr = havexError ? enumeratorXErr.Current : 0; double expectedYerr = haveyError ? enumeratorYErr.Current : 0; Assert.AreEqual(expectedXerr, point.ErrorX); Assert.AreEqual(expectedYerr, point.ErrorY); } Assert.False(enumeratorX.MoveNext(), "X input has more data"); Assert.False(enumeratorY.MoveNext(), "Y input has more data"); Assert.False(seriesEnumerator.MoveNext(), "Series has more data"); }
protected override void UpdateSeries() { var model = _model.Model; model.Series.Clear(); for (var i = 0; i < _plot.Count; i++) { var points = _plot[i]; var series = new ScatterErrorSeries(); for (var j = 0; j < points.Count; j++) { var point = new ScatterErrorPoint(points[j].X, points[j].Y, points[j].Xerr, points[j].Yerr); series.Points.Add(point); } UpdateScatterSeries(series, points); model.Series.Add(series); } }