예제 #1
0
        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 = "Гипотеза пинята";
        }
예제 #2
0
 public DistributionChart GetDistributionbarChart(int intervalsCount)
 {
     _barChart = new DistributionChart(_distribution, intervalsCount, _kernal);
     return _barChart;
 }