Пример #1
0
        //матрица диаграмм разброса
        public void GetMatrixOfScatterDiagrams(TableLayoutPanel tableLayout)
        {
            tableLayout.Controls.Clear();
            tableLayout.ColumnStyles.Clear();
            tableLayout.RowStyles.Clear();

            tableLayout.ColumnCount = tableLayout.RowCount = n;

            for (int i = 0; i < n; i++)
            {
                RowStyle    rs = new RowStyle(SizeType.Percent, 100f / n);
                ColumnStyle cs = new ColumnStyle(SizeType.Percent, 100f / n);

                tableLayout.RowStyles.Add(rs);
                tableLayout.ColumnStyles.Add(cs);
            }

            tableLayout.CellBorderStyle = TableLayoutPanelCellBorderStyle.InsetDouble;

            for (int i = 0; i < n; i++)
            {
                STAT stat_i = stats[i];
                for (int j = 0; j < n; j++)
                {
                    STAT stat_j = stats[j];

                    Chart chart = new Chart();
                    chart.Dock = DockStyle.Fill;


                    ChartArea chartArea = new ChartArea();
                    chart.ChartAreas.Add(chartArea);

                    chart.ChartAreas[0].AxisX.Minimum           = stat_i.Min;
                    chart.ChartAreas[0].AxisX.Maximum           = stat_i.Max;
                    chart.ChartAreas[0].AxisY.ArrowStyle        = AxisArrowStyle.Triangle;
                    chart.ChartAreas[0].AxisX.ArrowStyle        = AxisArrowStyle.Triangle;
                    chart.ChartAreas[0].AxisX.LabelStyle.Format = "{0:0.00}";
                    chart.ChartAreas[0].AxisY.LabelStyle.Format = "{0:0.00}";

                    Series s = new Series();

                    if (i == j)
                    {
                        s.BorderColor      = Color.Black;
                        s.CustomProperties = "PointWidth=1";
                        stat_i.GetSeria1_Column(s);
                        //chart.Series.Add(s);

                        chart.ChartAreas[0].AxisX.Interval = Math.Round(stat_i.h, 4);
                        chart.ChartAreas[0].AxisY.Maximum  = stat_i.masYVid.Max();
                    }
                    else
                    {
                        s.ChartType = SeriesChartType.Point;
                        chart.ChartAreas[0].AxisY.Minimum = stat_j.Min;
                        chart.ChartAreas[0].AxisY.Maximum = stat_j.Max;
                        s.Points.DataBindXY(stat_i.d, stat_j.d);
                    }

                    chart.Series.Add(s);
                    tableLayout.Controls.Add(chart, j, i);
                }
            }
        }