Пример #1
0
        public DisplayForm(Dictionary <Range, double> data, string title, string xName, string yName)
        {
            InitializeComponent();

            //Вывод таблицы
            SetupDataSource <Range, double>(data, xName, yName);
            setupForm(title, xName, yName);

            //Рисуем график
            var plotter = new HistogramPlotter(graph);

            plotter.Plot(data, Color.FromArgb(255, 39, 174, 96));
        }
        ///////////////////////////// ПОСТРОЙКА ГРАФИКОВ ////////////////////////////////

        //Строит график ряда
        //Для дискретного распределения строится только полигон относительных частот
        //Для непрерывного - гистограмма, а на ее фоне  - полигон, но деленый на ширину интервала
        void draw_emp_graph(ZedGraphControl graph, AbstractDistribution distr)
        {
            if (distr.DistributionType == DistributionType.DISCRETE)
            {
                draw_distribution(graph, distr.Distribution.GroupRelFreq);
            }
            else
            {
                //Непрерывное
                //Гистограмма
                HistogramPlotter plotter = new HistogramPlotter(graph);
                plotter.Plot(distr.Distribution.IntervalRelFreq, Color.FromArgb(30, 230, 126, 34));

                //Полигон
                double interval = 1;
                var    points   = new PointPairList();
                for (int i = 0; i < distr.Distribution.GroupRelFreq.Count; i++)
                {
                    var val = distr.Distribution.GroupRelFreq.ElementAt(i);
                    if (i < distr.Distribution.GroupRelFreq.Count - 1)
                    {
                        interval = distr.Distribution.GroupRelFreq.ElementAt(i + 1).Key - val.Key;
                    }

                    points.Add(val.Key, val.Value / interval);
                }

                var pane = graph.GraphPane;

                var curve = pane.AddCurve("", points, Color.FromArgb(255, 39, 174, 96), SymbolType.Default);


                graph.AxisChange();
                graph.Invalidate();
            }
        }