Beispiel #1
0
        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");
        }
Beispiel #3
0
        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);
            }
        }