发布
社区首页 >问答首页 >氧图从'X轴值‘C#中查找'Y轴值’

氧图从'X轴值‘C#中查找'Y轴值’
EN

Stack Overflow用户
提问于 2019-01-07 01:01:03
回答 1查看 453关注 0票数 1

我使用Oxyplot绘制我的图,并且我在绘制图时没有任何问题。我的Y轴是'LinearAxis‘,而X轴是'TimeSpanAxis’。

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

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-08 01:37:47

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

其思想是基于要搜索的点之前和之后的“定义的点”来计算坡度。然后,您可以使用斜率来查找丢失的相关点坐标。

代码语言:javascript
代码运行次数:0
复制
Slope = (y2-y2)/(x2-x1)

假设您有一个轴作为LinearAxis,另一个轴作为TimeSpanAxis,并且给出了需要找到Y的TimeSpanAxis。

代码语言:javascript
代码运行次数:0
复制
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;
}            
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54063884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档