Oxyplot查找';Y轴值';从';X轴值';C#

Oxyplot查找';Y轴值';从';X轴值';C#,c#,oxyplot,C#,Oxyplot,我使用Oxyplot绘制我的绘图,我在绘制绘图时没有任何问题。 我的Y轴是“直线轴”,X轴是“时间轴” 我想做的是从给定的X值中得到Y值 例如,我想从TimeSpan(0,0,0,1)中获取Y值。 我不能使用鼠标位置或任何其他事件。X值将由用户以时间跨度的形式给出 这应该很容易,但我找不到任何东西。我不太确定这是最有效的方法,但这里有一个关于如何从X中找到Y值的建议。请注意,这不是经过100%测试的代码,但您可以从中得到想法的要点 其思想是根据搜索点前后的“定义点”计算坡度。然后,您可以使用斜率

我使用Oxyplot绘制我的绘图,我在绘制绘图时没有任何问题。 我的Y轴是“直线轴”,X轴是“时间轴”

我想做的是从给定的X值中得到Y值

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

我不能使用鼠标位置或任何其他事件。X值将由用户以时间跨度的形式给出


这应该很容易,但我找不到任何东西。

我不太确定这是最有效的方法,但这里有一个关于如何从X中找到Y值的建议。请注意,这不是经过100%测试的代码,但您可以从中得到想法的要点

其思想是根据搜索点前后的“定义点”计算坡度。然后,您可以使用斜率来查找问题点的缺失坐标

Slope = (y2-y2)/(x2-x1)
假设你有一个轴作为直线轴,另一个轴作为时间轴,那么你就给出了你需要找到Y的时间轴

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;
}            
var timeSpanToSearch=新的时间跨度(8,30,0);
var timespantosearchsdouble=TimeSpanAxis.ToDouble(timeSpanToSearch);
var series=MyModel.series.First()作为LineSeries;
双结果=0;
//如果点是已定义的点,则可以轻松找到Y
if(series.Points.Any(x=>x.x.Equals(timespantosearchsdouble)))
{
结果=系列.Points.First(x=>x.x.Equals(timespantosearchsdouble)).Y;
}
其他的
{
var floorValue=series.Points.Where(x=>x.xx.x>timespantosearchsdouble.First();
变量斜率=(ceilingValue.Y-floorValue.Y)/(ceilingValue.X-floorValue.X);
结果=斜率*(timespantosearchsdouble-floorValue.X)+floorValue.Y;
}