2014-02-28 2 views
1

"비슷한"질문을했지만 놀랍게도 적용 할 수있는 것은 실제로 찾을 수 없습니다. 가져온 변환 데이터를 사용하여 합계를 사용하여 Mschart 선 차트에서 작성하려는 데이터 포인트 수를 계산합니다. 이 결과를 사용하여, 나는 다른 숫자로 그것을 나눕니다 그리고 이것은 각 데이터 포인트 사이에 갖고 싶은 공간입니다. 124는 일정합니다.Mschart에 균등하게 분포 된 데이터 포인트 표시

300 (변화)/124 (X 축) = 2.419354838709677

제가 너무

for (double i = 1; i < samples_hd; i++) 
{ 
    // distribute data points evenly here 
} 
같은 루프를 생성 생각 ( 이 I 각 지점 사이에 원하는 공간이다)

파일을 차트로 읽어 들일 예정입니다. 지금까지 수동으로 데이터 포인트를 추가했습니다. 위와 같이 추가하는 방법을 모르겠습니다. ^.

var sn = new System.Windows.Forms.DataVisualization.Charting.Series(English.Sam_Num); 
sn.ChartType = SeriesChartType.Line; 
sn.Points.Add(new DataPoint(9, 30)); 
sn.Points.Add(new DataPoint(150, 28)); 
sn.XAxisType = AxisType.Primary; 
Chart_Line.Series.Add(sn); 

Chart_Line.ChartAreas[0].AxisX.Minimum = 0; 
Chart_Line.ChartAreas[0].AxisX.Maximum = 124; 
Chart_Line.ChartAreas[0].AxisX.Interval = 15; 
Chart_Line.ChartAreas[0].AxisX.MajorGrid.Enabled = false; 

답변

0

실제로 작동하려면 오랜 시간이 걸렸지 만 작동합니다 :) 실제로 그래프에는 3 시리즈가 있지만 예제에는 2 시리즈 만 표시됩니다.

private void Main(byte[] rec_arr) 
{ 
    var series1 = new Series("series1"); 
    series1 .ChartType = SeriesChartType.Line; 
    series1 .MarkerStyle = MarkerStyle.Circle; 
    series1 .MarkerSize = 3; 
    series1 .YAxisType = AxisType.Primary; 
    series1 .Color = Color.Navy; 

    var series2 = new Series("series2"); 
    series2 .ChartType = SeriesChartType.Line; 
    series2 .MarkerStyle = MarkerStyle.Triangle; 
    series2 .MarkerSize = 3; 
    series2 .YAxisType = AxisType.Primary; 
    series2 .Color = Color.Crimson; 

    foreach (var series in Chart1.Series) 
    { 
     series.Points.Clear(); 
    } 

    double interval1 = 0; 
    double interval2 = File_Details.time/(double)124; 
    int Offset2 = 502; 
    int Offset3 = 750; 
    float data1, data2; 

    if (File_Details.time == 0) 
    { 
     Label_Error_Graph.Visible = true; 
     Chart1.ChartAreas[0].AxisX.Maximum = 0; 
     Chart1.ChartAreas[0].AxisX.Minimum = 0; 
     Chart1.Series[0].Points.Add(0); 
     Chart1.Series[1].Points.Add(0); 
    } 
    else 
    { 
     Label_Error_Graph.Visible = false; 
    } 

    for (interval1 = 0; interval1 < File_Details.time; interval1 += interval2) 
    { 
     data1 = DecodeSingle(rec_arr, Offset3); 
     if (Chart1.Series.IndexOf("series1") == -1) 
     { 
      Chart1.Series.Add(series1); 
     } 
     Offset3 = Offset3 + 2; 

     if (data1 < 300) 
     { 
      Chart1.Series[0].Points.AddXY(interval1, supply); 
     } 
     else 
     { 
      Chart1.Series[0].Points.AddXY(interval1, 300); 
     } 
    } 

    for (interval1 = 0; interval1 < File_Details.time; interval1 += interval2) 
    { 
     data2 = DecodeSingle(rec_arr, Offset2)/(float)100; 
     if (Chart1.Series.IndexOf("series2") == -1) 
     { 
      Chart1.Series.Add(series2); 
     } 
     Offset2 = Offset2 + 2; 

     if (data2 < 150) 
     { 
      Chart1.Series[1].Points.AddXY(interval1, data2); 
     } 
     else 
     { 
      Chart1.Series[1].Points.AddXY(interval1, 150); 
     } 
    } 
}