我使用Oxyplot绘制情节,并且对绘制情节没有任何问题。 我的Y轴是“ LinearAxis”,X轴是“ TimeSpanAxis”。
我要从给定的X值中获取Y值。
例如,我想从TimeSpan(0,0,0,1).
中获取Y值
我不能使用鼠标位置或任何其他事件。 X值将由用户指定为时间跨度。
这应该很容易,但是我什么也找不到。
答案 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;
}