创建具有相对距离的图形(C#)

时间:2014-08-28 10:15:58

标签: c# charts

我有以下问题。我用c#中的migradoc创建了一个图表。

假设我的xAxis有以下几点: 20.4,20.6,30.6,100.4,200.3

问题是它在图表中将系列中的每个x点设置为相等的距离。

虽然我需要的是一个图表,它将x点设置在相对距离上。例如,点20.6和30.6之间的距离需要小于30.6和100.4之间的距离。 (积分总是不同,点数也是如此)

使距离更好的一种方法是在现有点之间添加额外的点。例如,第一步是0.2额外,第二步是额外的10.0。所以我想在这个步骤之间添加例如50个额外点,以便距离相对相同。

这是我唯一可以提出的,有人可以给我一些建议如何实现这一目标吗? (或另一种可能的解决方案?)

1 个答案:

答案 0 :(得分: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来缩放。

相关问题