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); }
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); }
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); }
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); }
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(); }
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); } }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
/// <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; } }