【问题标题】:Oxyplot Find 'Y Axis Value' From 'X Axis Value' C#Oxyplot 从“X 轴值”C# 中查找“Y 轴值”
【发布时间】:2019-01-06 17:01:02
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c# oxyplot


    【解决方案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;
    }            
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-20
      • 1970-01-01
      • 1970-01-01
      • 2014-12-03
      相关资源
      最近更新 更多