2014-02-28 70 views
1

我曾看過「類似」的問題,但實際上找不到任何適用的東西,令人驚訝。我使用導入的轉換數據計算我想要在Mschart折線圖上創建多少個數據點。使用這個結果,我把它分成另一個不同的數字,這是我想要在每個數據點之間的空間。 124是恆定的。在Mschart中顯示均勻分佈的數據點

300(可變)/ 124(x軸)= 2.419354838709677(這就是我想要的每個點之間的空間)

我考慮創建一個循環,像這樣

for (double i = 1; i < samples_hd; i++) 
{ 
    // distribute data points evenly here 
} 

一個文件將被讀入圖表,到目前爲止,我已經手動添加了數據點,因爲我不知道如何像上面那樣添加它們。

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

花了這麼長的時間來得到它的工作,但它的工作原理:) My圖表實際上有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); 
     } 
    } 
}