我有以下问题。我用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个额外点,以便距离相对相同。
这是我唯一可以提出的,有人可以给我一些建议如何实现这一目标吗? (或另一种可能的解决方案?)
答案 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来缩放。