2014-08-28 25 views
0

我有以下問題。我在c#中用migradoc創建了一個圖表。使用相對距離創建圖形(C#)

假設我有以下幾點對我的X軸: 20.4,20.6,30.6,100.4,200.3

的問題是,它設置在該系列中每XPOINT圖表中的距離相等。

雖然我需要的是一個圖表,他在相對距離上設置了x點。例如,點20.6和30.6之間的距離需要小於30.6和100.4之間的距離。 (點數始終不同,點數也一樣)

使距離更好的一種方法是在現有點之間添加額外點。例如,第一步是0.2多餘,第二步是10.0多餘。所以我想在這一步之間增加50個額外的點數,這樣距離是相對的。

這是我能想出的唯一的東西,有人可以給我一些建議如何做到這一點? (或另一種可能的解決方案?)

回答

0

這種方法對我來說很有效。我第一次做的相對距離:

Int64[] relAfstand = new Int64[afstand.Count()]; 
    for(int i = 0; i < afstand.Count(); i++){ 
     double tussenRel = Convert.ToDouble(afstand[i]); 
     double eindRel = Convert.ToDouble(afstand[afstand.Count()-1]); 
     double beginRel = Convert.ToDouble(afstand[0]); 

     double Rel = (((eindRel - beginRel) - (eindRel - tussenRel))/(eindRel - beginRel)); 
     relAfstand[i] = Convert.ToInt64((Rel)*100); 
    } 

然後我轉換的數據相對與作爲距離相同的係數縮放:

List<double> ConvertedData = new List<double>(); 
int c = 0; 
int c2 = 1; 
double steps = 0; 
bool calcSteps = false; 
bool calcDistance = false; 
for (int i = 0; i < 100; i++) { 
    if (calcDistance == false) { 
     distance.Add(i); 
    } 

    if (relAfstand[c] == i) { 
     ConvertedData.Add(data[c]); 
     calcSteps = false; 
     c2 = 1; 
     c++; 
    }else { 
     if (calcSteps == false) { 
      steps = ((data[c] - data[c-1])/(relAfstand[c] - relAfstand[c-1])); 
      calcSteps = true; 
     } 
     ConvertedData.Add(data[c-1] + (steps * c2)); 
     c2++; 
    } 
} 
calcDistance = true; 

可能不是最好的解決辦法,但它的工作原理。由於百分比可以接近,我現在用200-300而不是100來調整。