public void DrawDistributionBarChart(DistributionChart barChart) { chart1.ResetAutoValues(); chart1.Series.Clear(); for (int i = 0; i < chart1.Series.Count; i++) { chart1.Series[i].IsVisibleInLegend = false; } int index = 0; if (isNeedDrawBarChartCheckBox.Checked) { BarChartInterval[] intervals = barChart.GetDistributionBarChartIntervals(); chart1.Series.Add("Гистограмма"); chart1.Series[index].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Column; chart1.Series[index].IsVisibleInLegend = true; intervals.ToList().ForEach( (b) => { chart1.Series[index].Points.AddXY( Math.Round((b.LeftBorder + b.RightBorder) / 2.0, 2), b.Frequence ); }); index++; } if (isNeedDrawDensityFuncCheckBox.Checked) { DensityFunctionValue[] densityFunctionValues = barChart.GetDistrbutionDensityFunctionValues(0.1);//получим плотность с швгом 0,1 this.functions = densityFunctionValues; chart1.Series.Add("Плотность"); chart1.Series[index].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; chart1.Series[index].IsVisibleInLegend = true; double maxDensityValue = densityFunctionValues.OrderBy(b => b.Y).Last().Y;/*сортирует от минимума до максимума 0,63*/ double maxBarChartColumnHeight = barChart.GetDistributionBarChartIntervals().OrderBy(b => b.Frequence).Last().Frequence; //отрисовка точек функции densityFunctionValues.ToList().ForEach( (b) => { double y = isNeedDrawBarChartCheckBox.Checked ? b.Y * maxBarChartColumnHeight / maxDensityValue : b.Y; chart1.Series[index].Points.AddXY(Math.Round(b.X, 2),y);//функция }); index++; // double param = _presenter.BaskOpt(densityFunctionValues.ToList()); } if (isNeedGausCheckBox.Checked) { KernalFunctionValues[] KernalValues = barChart.GetKernalFunctionValues(0.1);//BaskOpt(functions.ToList()).ToArray(); chart1.Series.Add("Ядро Гаусса"); chart1.Series[index].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; chart1.Series[index].IsVisibleInLegend = true; chart1.Series[index].Color = Color.Black; double maxDensityValue = KernalValues.OrderBy(b => b.Y).Last().Y;/*сортирует от минимума до максимума*/ double maxBarChartColumnHeight = barChart.GetDistributionBarChartIntervals().OrderBy(b => b.Frequence).Last().Frequence; //отрисовка точек ядерной функции KernalValues.ToList().ForEach( (b) => { double y = isNeedDrawBarChartCheckBox.Checked ? b.Y * maxBarChartColumnHeight / maxDensityValue : b.Y; chart1.Series[index].Points.AddXY(b.X,y);//функция }); index++; } if (EpancheckBox.Checked) { KernalFunctionValues[] KernalValues = barChart.GetKernalFunctionValues(0.1); chart1.Series.Add("Ядро Епаничникова"); chart1.Series[index].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line; chart1.Series[index].IsVisibleInLegend = true; chart1.Series[index].Color = Color.Red; double maxDensityValue = KernalValues.OrderBy(b => b.Y).Last().Y;/*сортирует от минимума до максимума*/ double maxBarChartColumnHeight = barChart.GetDistributionBarChartIntervals().OrderBy(b => b.Frequence).Last().Frequence; //отрисовка точек ядерной функции KernalValues.ToList().ForEach( (b) => { double y = isNeedDrawBarChartCheckBox.Checked ? b.Y * maxBarChartColumnHeight / maxDensityValue : b.Y; chart1.Series[index].Points.AddXY(b.X, y);//функция }); index++; } double sko = Math.Round(_presenter.CalculateSKO(), 2); textBox1.Text = sko.ToString(); Hyposlabel.Text = "Гипотеза пинята"; }
public DistributionChart GetDistributionbarChart(int intervalsCount) { _barChart = new DistributionChart(_distribution, intervalsCount, _kernal); return _barChart; }