MS диаграмма частоты радара оси - PullRequest
5 голосов
/ 08 августа 2011

Я хотел бы нарисовать радиолокационную карту, используя элемент управления MS Chart в приложении WinForms.

Эта диаграмма содержит данные за 1 день, у меня есть данные за каждую секунду, поэтому у меня есть 86 400 пар значений x-y. Ось X содержит даты, y мои значения типа int.

Мой тестовый код выглядит так:

var fromDate =  new DateTime(DateTime.Now.Year,
                                         DateTime.Now.Month,
                                         DateTime.Now.Day,
                                         0,
                                         0,
                                         0);

            var toDate = new DateTime(DateTime.Now.Year,
                                      DateTime.Now.Month,
                                      DateTime.Now.Day,
                                      23,
                                      59,
                                      59);

            List<DateTime> xValues = new List<DateTime>();
            List<double> yValues = new List<double>();

            var iterDate = fromDate;
            var i = 0;

            while (iterDate <= toDate)
            {
                xValues.Add(iterDate);
                yValues.Add(i);

                iterDate = iterDate.AddSeconds(1);
                i++;
            }

            chart1.Series["Default"].Points.DataBindXY(xValues, yValues);

            var dateLabelStyle = new LabelStyle();
            dateLabelStyle.Format = "HH:mm:ss";
            chart1.ChartAreas["Default"].AxisX.LabelStyle = dateLabelStyle;

            chart1.ChartAreas["Default"].AxisX.Minimum = fromDate.ToOADate();
            chart1.ChartAreas["Default"].AxisX.Maximum = toDate.ToOADate();

            chart1.Series["Default"].IsXValueIndexed = true;
            chart1.Series["Default"].ChartType = SeriesChartType.Radar;
            chart1.Series["Default"]["RadarDrawingStyle"] = "Line";
            chart1.Series["Default"]["AreaDrawingStyle"] = "Circle";
            chart1.Series["Default"]["CircularLabelsStyle"] = "Horizontal";
            chart1.ChartAreas["Default"].Area3DStyle.Enable3D = false;

Результат выглядит так: enter image description here

Я думаю, что причина «эффекта черного круга» заключается в том, что он рисует ось y для каждых 86 400 точек. Как мне настроить рисование этих осей только в каждый час?

Метки (даты, которые я установил) для осей x не отображаются. Как я могу показать их?

Спасибо заранее!

.net4 / c # / winforms / vs2010

1 Ответ

3 голосов
/ 11 августа 2011

Вы, вероятно, хотите использовать «Полярный» график вместо «Радар».Нечто подобное поможет вам приблизиться к тому, что вы хотите, я думаю:

chart1.Series["Default"].ChartType = SeriesChartType.Polar;
chart1.Series[0]["PolarDrawingStyle"] = "Line";
// setup the X grid
chart1.ChartAreas["Default"].AxisX.MajorGrid.Enabled = true;
chart1.ChartAreas["Default"].AxisX.MajorGrid.IntervalType = DateTimeIntervalType.Hours;
chart1.ChartAreas["Default"].AxisX.MajorGrid.Interval = 1;
chart1.ChartAreas["Default"].AxisX.Crossing = 0;
// setupthe Y grid
chart1.ChartAreas["Default"].AxisY.MajorGrid.Enabled = true;

Polar plot

...