Exemplo n.º 1
0
        public static PlotModel CreateExponentialDistributionCustomBins(double mean = 1, int n = 50000)
        {
            var model = new PlotModel {
                Title = "Exponential Distribution", Subtitle = "Custom bins (" + n + " samples)"
            };

            model.Axes.Add(new LinearAxis {
                Position = AxisPosition.Left, Title = "Frequency"
            });
            model.Axes.Add(new LinearAxis {
                Position = AxisPosition.Bottom, Title = "x"
            });

            Random rnd = new Random();

            HistogramSeries chs = new HistogramSeries();

            var binningOptions = new BinningOptions(BinningOutlierMode.CountOutliers, BinningIntervalType.InclusiveLowerBound, BinningExtremeValueMode.ExcludeExtremeValues);

            chs.Items.AddRange(HistogramHelpers.Collect(SampleExps(rnd, 1.0, n), new double[] { 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.75, 1.0, 2.0, 3.0, 4.0, 5.0 }, binningOptions));
            chs.StrokeThickness = 1;
            chs.FillColor       = OxyColors.Purple;
            model.Series.Add(chs);

            return(model);
        }
Exemplo n.º 2
0
        public static PlotModel CreateExponentialDistribution(double mean = 1, int n = 10000)
        {
            var model = new PlotModel {
                Title = "Exponential Distribution", Subtitle = "Uniformly distributed bins (" + n + " samples)"
            };

            model.Axes.Add(new LinearAxis {
                Position = AxisPosition.Left, Title = "Frequency"
            });
            model.Axes.Add(new LinearAxis {
                Position = AxisPosition.Bottom, Title = "x"
            });

            Random rnd = new Random(1);

            HistogramSeries chs = new HistogramSeries();

            var binningOptions = new BinningOptions(BinningOutlierMode.CountOutliers, BinningIntervalType.InclusiveLowerBound, BinningExtremeValueMode.ExcludeExtremeValues);
            var binBreaks      = HistogramHelpers.CreateUniformBins(0, 5, 15);

            chs.Items.AddRange(HistogramHelpers.Collect(SampleExps(rnd, 1.0, n), binBreaks, binningOptions));
            chs.StrokeThickness = 1;
            model.Series.Add(chs);

            return(model);
        }
Exemplo n.º 3
0
        public static PlotModel CreateIndividualBinColors(double mean = 1, int n = 10000)
        {
            var model = new PlotModel {
                Title = "Individual Bin Colors", Subtitle = "Minimum is Red, Maximum is Green"
            };

            model.Axes.Add(new LinearAxis {
                Position = AxisPosition.Left, Title = "Frequency"
            });
            model.Axes.Add(new LinearAxis {
                Position = AxisPosition.Bottom, Title = "Observation"
            });

            Random rnd = new Random(1);

            HistogramSeries chs = new HistogramSeries()
            {
                FillColor = OxyColors.Gray, RenderInLegend = true, Title = "Measurements"
            };

            var binningOptions = new BinningOptions(BinningOutlierMode.CountOutliers, BinningIntervalType.InclusiveLowerBound, BinningExtremeValueMode.ExcludeExtremeValues);
            var binBreaks      = HistogramHelpers.CreateUniformBins(0, 10, 20);
            var bins           = HistogramHelpers.Collect(SampleUniform(rnd, 0, 10, 1000), binBreaks, binningOptions).OrderBy(b => b.Count).ToArray();

            bins.First().Color = OxyColors.Red;
            bins.Last().Color  = OxyColors.Green;
            chs.Items.AddRange(bins);
            chs.StrokeThickness = 1;
            model.Series.Add(chs);

            return(model);
        }
Exemplo n.º 4
0
        public static PlotModel HistogramLabelPlacement()
        {
            var model = new PlotModel {
                Title = "Label Placement"
            };

            var s1 = new HistogramSeries {
                LabelPlacement = LabelPlacement.Base, LabelFormatString = "Base", StrokeThickness = 1, LabelMargin = 5
            };
            var s2 = new HistogramSeries {
                LabelPlacement = LabelPlacement.Inside, LabelFormatString = "Inside", StrokeThickness = 1, LabelMargin = 5
            };
            var s3 = new HistogramSeries {
                LabelPlacement = LabelPlacement.Middle, LabelFormatString = "Middle", StrokeThickness = 1, LabelMargin = 5
            };
            var s4 = new HistogramSeries {
                LabelPlacement = LabelPlacement.Outside, LabelFormatString = "Outside", StrokeThickness = 1, LabelMargin = 5
            };

            s1.Items.Add(new HistogramItem(1, 2, 4, 4));
            s1.Items.Add(new HistogramItem(2, 3, -4, 4));
            s2.Items.Add(new HistogramItem(3, 4, 2, 2));
            s2.Items.Add(new HistogramItem(4, 5, -2, 2));
            s3.Items.Add(new HistogramItem(5, 6, 3, 3));
            s3.Items.Add(new HistogramItem(6, 7, -3, 3));
            s4.Items.Add(new HistogramItem(7, 8, 1, 1));
            s4.Items.Add(new HistogramItem(8, 9, -1, -1));

            model.Series.Add(s1);
            model.Series.Add(s2);
            model.Series.Add(s3);
            model.Series.Add(s4);

            return(model);
        }
Exemplo n.º 5
0
        public Histogram()
        {
            InitializeComponent();
            Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("NDU4Nzc4QDMxMzkyZTMxMmUzMFFadmVERkJ4OFpEZ2J6TGpOKzU4d0tvenR3SFZJcHpQNzgzd3VGeVJtRTg9");

            StackLayout stackLayout = new StackLayout();

            Serializer serializer = new Serializer();
            Profile    profile    = serializer.Deserialize("Test_user.xml");

            ExpenseStatisticsBL esBL = new ExpenseStatisticsBL(profile.Spends, profile.Categories);

            SfChart chart = new SfChart();

            HistogramSeries histogramSeries = new HistogramSeries()
            {
                ItemsSource  = esBL.TestData(),
                XBindingPath = "XValue",
                YBindingPath = "YValue",
                Interval     = 20
            };

            chart.Series.Add(histogramSeries);
            stackLayout.Children.Add(chart);
            Content = stackLayout;
        }
        public void Add(ChartControl chart, Pane ownerPane)
        {
            owner        = chart;
            seriesDeltas = new HistogramSeries("Accelerator");
            SeriesResult = new List <Series.Series> {
                seriesDeltas
            };

            EntitleIndicator();
        }
Exemplo n.º 7
0
        public PlotModel GetPlotModel(string title = "", double titleFontSize = 12)
        {
            var distPlotModel = new PlotModel {
                Title = title, IsLegendVisible = true, TitleFontSize = titleFontSize
            };

            distPlotModel.Axes.Add(new LinearAxis {
                Position = AxisPosition.Left, Minimum = 0.0
            });

            var histoSeries = new HistogramSeries()
            {
                FillColor = OxyColors.Blue, StrokeThickness = 1, StrokeColor = OxyColors.Black, RenderInLegend = false
            };
            double peakDist = double.NegativeInfinity;

            foreach (var bin in Bins)
            {
                double pct = bin.Value.Count / (double)Values.Count;
                if (pct > peakDist)
                {
                    peakDist = pct;
                }
                double start = bin.Key;
                double end   = bin.Key + BinLength - 10e-7;
                histoSeries.Items.Add(new HistogramItem(start, end, pct, bin.Value.Count));
            }
            distPlotModel.Series.Add(histoSeries);

            // plot average
            ScatterSeries averageSeries = new ScatterSeries()
            {
                MarkerType = MarkerType.Diamond, MarkerFill = OxyColors.Red, MarkerSize = 5, Title = "Average"
            };

            averageSeries.Points.Add(new ScatterPoint(Average, peakDist / 2.0));
            distPlotModel.Series.Add(averageSeries);

            if (!double.IsNaN(Mode))
            {
                // plot mode
                ScatterSeries modeSeries = new ScatterSeries()
                {
                    MarkerType = MarkerType.Circle, MarkerFill = OxyColors.Orange, MarkerSize = 5, Title = "Mode"
                };
                modeSeries.Points.Add(new ScatterPoint(Mode, peakDist / 2.0));
                distPlotModel.Series.Add(modeSeries);
            }

            return(distPlotModel);
        }
        public FrequencyHistogramViewModel(FrequencyDomain frequencyDomain)
        {
            Title = Properties.Resources.PLOT_FREQUENCY_HISTOGRAM_TITLE;
            Axes.Add(new LinearAxis {
                Position = AxisPosition.Left, Title = Properties.Resources.PLOT_FREQUENCY_HISTOGRAM_LEFT_AXIS
            });
            Axes.Add(new LinearAxis {
                Position = AxisPosition.Bottom, Title = Properties.Resources.PLOT_FREQUENCY_HISTOGRAM_BOTTOM_AXIS
            });

            if (frequencyDomain != null)
            {
                HistogramSeries chs = new HistogramSeries();
                chs.Items.AddRange(GetFrequencyBins(frequencyDomain));
                Series.Add(chs);
            }
        }
Exemplo n.º 9
0
        public static PlotModel CustomItemMapping()
        {
            var model = new PlotModel {
                Title = "Custom Item Mapping"
            };

            var s = new HistogramSeries {
                Mapping = obj => (HistogramItem)obj, TrackerFormatString = "{Description}"
            };

            s.Items.Add(new CustomHistogramItem(1, 2, 4, 4, "Item 1"));
            s.Items.Add(new CustomHistogramItem(2, 3, -4, 4, "Item 2"));
            s.Items.Add(new CustomHistogramItem(3, 4, 2, 2, "Item 3"));
            s.Items.Add(new CustomHistogramItem(4, 5, -2, 2, "Item 4"));
            model.Series.Add(s);

            return(model);
        }
Exemplo n.º 10
0
        public void TestHistogram()
        {
            // dummy test for debug

            var data = new List <double>()
            {
                4.7, 4.5, 4.9, 4, 4.6, 4.5, 4.7, 3.3, 4.6, 3.9, 3.5, 4.2, 4, 4.7, 3.6, 4.4, 4.5, 4.1, 4.5, 3.9, 4.8, 4, 4.9, 4.7, 4.3, 4.4, 4.8, 5, 4.5, 3.5, 3.8, 3.7, 3.9, 5.1, 4.5, 4.5, 4.7, 4.4, 4.1, 4, 4.4, 4.6, 4, 3.3, 4.2, 4.2, 4.2, 4.3, 3, 4.1
            };

            var hist   = new Histogram();
            var series = new HistogramSeries(hist);

            series.RawValues = data;

            series.ProcessRawValues();

            Assert.AreEqual(0, series.BinCount);
        }
Exemplo n.º 11
0
        public override View GetSampleContent(Context context)
        {
            SfChart chart = new SfChart(context);

            chart.Title.Text     = "Examination Result";
            chart.Title.TextSize = 15;
            chart.SetBackgroundColor(Color.White);

            chart.ColorModel.ColorPalette = ChartColorPalette.Natural;

            NumericalAxis categoryaxis = new NumericalAxis();

            categoryaxis.Title.Text            = "Score of Final Examination";
            categoryaxis.EdgeLabelsDrawingMode = EdgeLabelsDrawingMode.Shift;
            categoryaxis.ShowMajorGridLines    = false;
            chart.PrimaryAxis = categoryaxis;

            NumericalAxis numericalaxis = new NumericalAxis();

            numericalaxis.Title.Text              = "Number of Students";
            numericalaxis.ShowMajorGridLines      = true;
            numericalaxis.LineStyle.StrokeWidth   = 0;
            numericalaxis.MajorTickStyle.TickSize = 0;
            chart.SecondaryAxis = numericalaxis;

            HistogramSeries histogramSeries = new HistogramSeries();

            histogramSeries.ItemsSource          = MainPage.GetHistogramData();
            histogramSeries.XBindingPath         = "YValue";
            histogramSeries.YBindingPath         = "XValue";
            histogramSeries.Interval             = 20;
            histogramSeries.TooltipEnabled       = true;
            histogramSeries.EnableAnimation      = true;
            histogramSeries.StrokeColor          = Color.White;
            histogramSeries.StrokeWidth          = 1;
            histogramSeries.DataMarker.ShowLabel = true;
            histogramSeries.DataMarker.LabelStyle.LabelPosition   = DataMarkerLabelPosition.Inner;
            histogramSeries.DataMarker.LabelStyle.BackgroundColor = Color.Transparent;
            histogramSeries.DataMarker.LabelStyle.TextColor       = Color.White;

            chart.Series.Add(histogramSeries);

            return(chart);
        }
Exemplo n.º 12
0
        public static PlotModel CreateNormalDistribution(double mean = 0, double std = 1, int n = 1000000)
        {
            var model = new PlotModel {
                Title = $"Normal Distribution (μ={mean}, σ={std})", Subtitle = "95% of the distribution (" + n + " samples)"
            };

            model.Axes.Add(new LinearAxis {
                Position = AxisPosition.Left, Title = "Frequency"
            });
            model.Axes.Add(new LinearAxis {
                Position = AxisPosition.Bottom, Title = "x"
            });

            Random rnd = new Random();

            HistogramSeries chs            = new HistogramSeries();
            var             binningOptions = new BinningOptions(BinningOutlierMode.CountOutliers, BinningIntervalType.InclusiveLowerBound, BinningExtremeValueMode.ExcludeExtremeValues);
            var             binBreaks      = HistogramHelpers.CreateUniformBins(-std * 4, std * 4, 100);

            chs.Items.AddRange(HistogramHelpers.Collect(SampleNormal(rnd, mean, std, n), binBreaks, binningOptions));
            chs.StrokeThickness = 1;

            double   LimitHi = mean + 1.96 * std;
            double   LimitLo = mean - 1.96 * std;
            OxyColor ColorHi = OxyColors.DarkRed;
            OxyColor ColorLo = OxyColors.DarkRed;

            chs.ColorMapping = (item) =>
            {
                if (item.RangeCenter > LimitHi)
                {
                    return(ColorHi);
                }
                else if (item.RangeCenter < LimitLo)
                {
                    return(ColorLo);
                }
                return(chs.ActualFillColor);
            };

            model.Series.Add(chs);

            return(model);
        }
        public static PlotModel HistogramSeriesLabelPlacement()
        {
            // prepare the model
            var model = new PlotModel()
            {
                Title             = "Histogram Label Position",
                LegendPlacement   = LegendPlacement.Outside,
                LegendPosition    = LegendPosition.TopCenter,
                LegendOrientation = LegendOrientation.Horizontal
            };

            // add two linear axes
            model.Axes.Add(new LinearAxis()
            {
                Title = "Observation", Position = AxisPosition.Bottom
            });
            model.Axes.Add(new LinearAxis()
            {
                Title = "Frequency", Position = AxisPosition.Left, Maximum = 1.5
            });

            // add a histogram for each type of label placement
            double x = 0.0;

            foreach (var placement in new[] { LabelPlacement.Base, LabelPlacement.Middle, LabelPlacement.Inside, LabelPlacement.Outside })
            {
                var histogramSeries = new HistogramSeries()
                {
                    Title             = placement.ToString(),
                    LabelFormatString = "{0}",
                    LabelPlacement    = placement,
                    StrokeThickness   = 2,
                };
                histogramSeries.Items.Add(new HistogramItem(x + 0.0, x + 0.5, 0.4, 4));
                histogramSeries.Items.Add(new HistogramItem(x + 0.5, x + 1.0, 0.6, 6));
                model.Series.Add(histogramSeries);

                x += 2.0;
            }

            return(model);
        }
Exemplo n.º 14
0
        public static PlotModel CreateDisconnectedBins()
        {
            var model = new PlotModel {
                Title = "Disconnected Bins"
            };

            model.Axes.Add(new LinearAxis {
                Position = AxisPosition.Left, Title = "Representation"
            });
            model.Axes.Add(new LinearAxis {
                Position = AxisPosition.Bottom, Title = "x"
            });

            HistogramSeries chs = new HistogramSeries();

            chs.Items.AddRange(new[] { new HistogramItem(0, 0.5, 10, 7), new HistogramItem(0.75, 1.0, 10, 7) });
            chs.LabelFormatString = "{0:0.00}";
            chs.LabelPlacement    = LabelPlacement.Middle;
            model.Series.Add(chs);

            return(model);
        }
Exemplo n.º 15
0
        public static PlotModel CreateExponentialDistribution(double mean = 1, int n = 10000)
        {
            var model = new PlotModel {
                Title = "Exponential Distribution", Subtitle = "Uniformly distributed bins (" + n + " samples)"
            };

            model.Axes.Add(new LinearAxis {
                Position = AxisPosition.Left, Title = "Frequency"
            });
            model.Axes.Add(new LinearAxis {
                Position = AxisPosition.Bottom, Title = "x"
            });

            Random rnd = new Random();

            HistogramSeries chs = new HistogramSeries();

            chs.Items.AddRange(HistogramHelpers.Collect(SampleExps(rnd, 1.0, n), 0, 5, 15, true));
            chs.StrokeThickness = 1;
            model.Series.Add(chs);

            return(model);
        }
Exemplo n.º 16
0
        public static PlotModel CreateExponentialDistributionCustomBins(double mean = 1, int n = 50000)
        {
            var model = new PlotModel {
                Title = "Exponential Distribution", Subtitle = "Custom bins (" + n + " samples)"
            };

            model.Axes.Add(new LinearAxis {
                Position = AxisPosition.Left, Title = "Frequency"
            });
            model.Axes.Add(new LinearAxis {
                Position = AxisPosition.Bottom, Title = "x"
            });

            Random rnd = new Random();

            HistogramSeries chs = new HistogramSeries();

            chs.Items.AddRange(HistogramHelpers.Collect(SampleExps(rnd, 1.0, n), new double[] { 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.75, 1.0, 2.0, 3.0, 4.0, 5.0 }, true));
            chs.StrokeThickness = 1;
            chs.FillColor       = OxyColors.Purple;
            model.Series.Add(chs);

            return(model);
        }
Exemplo n.º 17
0
        private void updateLayer(int index)
        {
            txtLayerIndex.Text = this.spotMaps[index].LayerIndex.ToString();
            txtLayerEn.Text    = this.spotMaps[index].NominalEnergy.ToString() + "MeV";
            txtLayerSpots.Text = this.spotMaps[index].ScanSpotNumber.ToString();
            txtLayerMaxMW.Text = this.spotMaps[index].MeterWeights.Max().ToString();
            txtLayerMaxMU.Text = (this.spotMaps[index].MeterWeights.Max() * this.MUMWratio).ToString();
            txtLayerMinMW.Text = this.spotMaps[index].MeterWeights.Min().ToString();
            txtLayerMinMU.Text = (this.spotMaps[index].MeterWeights.Min() * this.MUMWratio).ToString();



            //spotmap
            var pmSM = new PlotModel {
                Title = string.Format("{0:0.000}MeV", spotMaps[index].NominalEnergy)
            };
            var coloraxis = new LinearColorAxis {
                Key = "ColorAxis", Position = AxisPosition.None, Minimum = spotMaps.Min(sm => sm.MeterWeights.Min()), Maximum = spotMaps.Max(sm => sm.MeterWeights.Max())
            };

            pmSM.Axes.Add(coloraxis);
            var s = new ScatterSeries {
                MarkerType = MarkerType.Circle, MarkerSize = 4, MarkerStrokeThickness = 0, ColorAxisKey = "ColorAxis", TrackerFormatString = "\nX: {2:0.###}\nY: {4:0.###}\nMU: {Tag}"
            };

            for (int i = 0; i < spotMaps[index].ScanSpotNumber; i++)
            {
                s.Points.Add(new ScatterPoint(spotMaps[index].X[i], spotMaps[index].Y[i], double.NaN, spotMaps[index].MeterWeights[i] * this.MUMWratio, (spotMaps[index].MeterWeights[i] * this.MUMWratio).ToString("0.###")));
            }
            pmSM.Series.Add(s);
            pmSM.Axes.Add(new LinearAxis {
                Position = AxisPosition.Bottom, Minimum = -200, Maximum = 200
            });
            pmSM.Axes.Add(new LinearAxis {
                Position = AxisPosition.Left, Minimum = -200, Maximum = 200
            });
            plotView1.Model = pmSM;

            this.painted = true;

            //histogram
            var pm = new PlotModel {
                Title = "Spots MU Histogram"
            };
            float           mwMax     = this.spotMaps[index].MeterWeights.Max();
            float           mwMin     = this.spotMaps[index].MeterWeights.Min();
            float           step      = (mwMax - mwMin) / this.stepNumHistogram;
            var             histo     = new Dictionary <double, int>();
            HistogramSeries histogram = new HistogramSeries();

            if (step > 0)
            {
                for (float curr = mwMin; curr <= mwMax; curr += step)
                {
                    var count = this.spotMaps[index].MeterWeights.Where(x => x >= curr && x < curr + step).Count();
                    histo.Add(curr * this.MUMWratio, count);
                }

                foreach (var pair in histo.OrderBy(x => x.Key))
                {
                    histogram.Items.Add(new HistogramItem(pair.Key, pair.Key + step * this.MUMWratio, pair.Value * step * this.MUMWratio, stepNumHistogram));
                }
            }
            else
            {
                histogram.Items.Add(new HistogramItem(mwMin, mwMin + 5, 5, 1));
            }

            histogram.TrackerFormatString = "MU Spots Count:\nFrom{5:#.00} to {6:#.00}\nMU counts: {7}";
            pm.Series.Add(histogram);
            plotViewHistogram.Model = pm;
        }
        public static PlotModel HistogramSeries()
        {
            // prepare the model
            var model = new PlotModel()
            {
                Title             = "Cubic Distribution",
                LegendPlacement   = LegendPlacement.Outside,
                LegendPosition    = LegendPosition.TopCenter,
                LegendOrientation = LegendOrientation.Horizontal
            };

            // add two linear axes
            model.Axes.Add(new LinearAxis()
            {
                Title = "Observation", Position = AxisPosition.Bottom
            });
            model.Axes.Add(new LinearAxis()
            {
                Title = "Frequency", Position = AxisPosition.Left
            });

            // generate random samples from a polynomial distribution
            double power       = 3;
            double max         = 10.0;
            int    sampleCount = 1000;

            double integral = Math.Pow(max, power + 1) / (power + 1);

            var           rnd     = new Random(0);
            List <double> samples = new List <double>();

            for (int i = 0; i < sampleCount; i++)
            {
                samples.Add(Math.Pow(rnd.NextDouble() * (power + 1) * integral, 1.0 / (power + 1)));
            }

            // plot histogram of samples
            var histogramSeries = new HistogramSeries()
            {
                Title           = $"Empirical Distribution",
                FillColor       = OxyColors.Green,
                StrokeColor     = OxyColors.Black,
                StrokeThickness = 2
            };

            var bins           = HistogramHelpers.CreateUniformBins(0, max, 20);
            var binningOptions = new BinningOptions(BinningOutlierMode.RejectOutliers, BinningIntervalType.InclusiveLowerBound, BinningExtremeValueMode.IncludeExtremeValues);
            var items          = HistogramHelpers.Collect(samples, bins, binningOptions);

            histogramSeries.Items.AddRange(items);
            model.Series.Add(histogramSeries);

            // plot ideal line for comparison
            var functionSeries = new FunctionSeries(x => Math.Pow(x, power) / integral, 0, max, 1000)
            {
                Title = "Ideal Distribution",
                Color = OxyColors.Red
            };

            model.Series.Add(functionSeries);

            return(model);
        }
Exemplo n.º 19
0
 /// <summary>
 /// 追加成交量
 /// </summary>
 /// <param name="field"></param>
 /// <param name="hisColor"></param>
 /// <returns></returns>
 public HistogramSeries AddHistogram(string field, string displayName, string relateCandleName, int panelID)
 {
     if (field == null || this.dtAllMsg.Columns.Contains(field))
     {
         return null;
     }
     else
     {
         if (this.dicChartPanel.ContainsKey(panelID))
         {
             ChartPanel chartPanel = this.dicChartPanel[panelID];
             HistogramSeries histogramSeries = new HistogramSeries();
             histogramSeries.Up_LineColor = Color.Lime;
             histogramSeries.RelateCandleName = relateCandleName;
             histogramSeries.Down_lineColor = Color.Lime;
             chartPanel.YScaleField.Add(field);
             histogramSeries.Field = field;
             histogramSeries.DisplayName = displayName;
             chartPanel.HistoramSeriesList.Add(histogramSeries);
             DataColumn dc = new DataColumn(field);
             this.dtAllMsg.Columns.Add(dc);
             return histogramSeries;
         }
         return null;
     }
 }