2015-05-28 45 views
1

我是新來的c#編程和創建我的第一個Windows窗體應用程序。我有兩個一維數組,一個代表X軸值,另一個代表Y軸。在Windows窗體中格式化折線圖

我想從他們使用下面的代碼創建一個圖。

public void drawgraph() 
    { 
     chart1.Series["Series1"].Name = MemsName; 
     for (int i = 0; i < VmicArray.Length; i++) 
     { 
      chart1.Series[MemsName].Points.AddXY(VmicArray[i], SensitivityArray[i]); 

     } 

     chart1.ChartAreas[0].AxisX.Title = "Vmic Value"; 
     chart1.ChartAreas[0].AxisY.Title = "Sensitivity"; 
    } 

我正在與我所設置的5間隔獲取x軸的值,我有在陣列(像-2.333333754或6.46870)。 X軸的範圍是從-4到+8。

有沒有人可以幫助我像獲得Excel圖形一樣獲得輸出?我在嘗試很長一段時間,我總是搞不清X軸的值。

我需要XAxis值從-10到+10的圖形,間隔爲1,並將Y值映射到圖上對應的X值。

不幸的是如果你要投射在一定範圍值,你需要使用的值之間的線性插值另一個範圍的,我無法發表任何圖片:(

回答

1

,首先確定舊最小值和最大值(MinXMaxX)並定義新的限制(-10,10)。

然後用一個簡單的公式來確定的任意的舊值的新的x值。

double MinX = VmicArray.min; 
double MaxX = VmicArray.Max; 

double NewMin = -10; 
double NewMax = 10; 

for (i = 0; i <= VmicArray.Count - 1; i++) { 
    // Linear interpolation  
    double NewX = VmicArray(i)/(MaxX - MinX) * (NewMax - NewMin) + NewMin; 
} 

重新計算每個X VALU e在使用AddXY之前。


爲了只是改變每個可視範圍軸線你可以使用XAxis.MinimumXAxis.Maximum還有XAxis.Interval屬性:

chart1.ChartAreas[0].AxisX.Minimum = -10; 
chart1.ChartAreas[0].AxisX.Maximum = 10; 
chart1.ChartAreas[0].AxisX.Interval = 1; 
+0

感謝延,你的代碼只是給我的思想,我的所有數據都是字符串。我在繪圖前將它們轉換爲雙倍,並且在設置最小值和最大值時,所有外觀都很好。 – newprogrammer

+0

哦,是的,使用字符串數據是錯誤的方法。很高興,它現在起作用。 – Jens