Oxyplot从“ X轴值” C#查找“ Y轴值”

时间:2019-01-06 17:01:03

标签: c# oxyplot

我使用Oxyplot绘制情节,并且对绘制情节没有任何问题。 我的Y轴是“ LinearAxis”,X轴是“ TimeSpanAxis”。

我要从给定的X值中获取Y值。

例如,我想从TimeSpan(0,0,0,1).中获取Y值

我不能使用鼠标位置或任何其他事件。 X值将由用户指定为时间跨度。

这应该很容易,但是我什么也找不到。

1 个答案:

答案 0 :(得分:1)

我不太确定这是执行此操作的最有效方法,但这是有关如何从X查找Y值的建议。请注意,这不是经过100%测试的代码,但是您将获得想法。

该想法是根据要搜索的点之前和之后的“定义的点”来计算坡度。然后,您可以使用坡度查找相关点的缺失坐标。

Slope = (y2-y2)/(x2-x1)

给定一个轴为LinearAxis,另一个轴为TimeSpanAxis,并给出需要查找Y的TimeSpanAxis。

var timeSpanToSearch = new TimeSpan(8, 30, 0);
var timeSpanToSearchAsDouble = TimeSpanAxis.ToDouble(timeSpanToSearch);
var series = MyModel.Series.First() as LineSeries;
double result = 0;

// If the point is a defined point, you can find Y easily
if (series.Points.Any(x => x.X.Equals(timeSpanToSearchAsDouble)))
{
    result = series.Points.First(x => x.X.Equals(timeSpanToSearchAsDouble)).Y;
}
else
{
    var floorValue = series.Points.Where(x => x.X < timeSpanToSearchAsDouble).Last();       
    var ceilingValue = series.Points.Where(x => x.X > timeSpanToSearchAsDouble).First();

    var slope = (ceilingValue.Y - floorValue.Y) / (ceilingValue.X - floorValue.X);
    result = slope * (timeSpanToSearchAsDouble - floorValue.X) + floorValue.Y;
}