2011-08-08 15 views
5

Chciałbym narysować wykres radarowy za pomocą kontroli MS Chart w aplikacji WinForm.Wykres MS Częstotliwość osi radarowych

Ta tabela zawiera dane na 1 dzień, mam dane na co sekundę, więc mam 86 400 par wartości x-y. Oś X zawiera daty, y moje wartości int.

Mój kod test jest tak:

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; 

widok Wynik jest tak: enter image description here

Myślę, że powodem tego „czarnego efekt okręgu” jest to, że rysuje oś y dla każdego 86 400 punktów. Jak ustawić, aby rysować te osie tylko o każdej porze?

Etykiety (daty ustawione przeze mnie) dla osi X nie pojawiają się. Jak mogę je pokazać?

Thx z góry!

.net4/C#/WinForm/VS2010

Odpowiedz

3

Prawdopodobnie chcesz użyć "Polar" działkę zamiast "Radar". Coś takiego będzie Ci bliżej do tego, co chcesz myślę:

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

+0

dzięki za pomoc! – Tom