开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 8947|回复: 0

LightningChart数据可视化工具使用篇41-LineSeriesCursors

[复制链接]

0

精华

10

贡献

2072

赞扬

帖子
141
软币
3968
在线时间
255 小时
注册时间
2021-1-21
发表于 2021-7-30 11:01:13 | 显示全部楼层 |阅读模式
LineSeriesCursors
演示示例: Point line; Multi-channel cursor tracking; Segments with splitters; Logarithmic axes

线条系列游标可通过追踪X坐标值来对线条系列数据进行可视化分析。系列值只能用实现ITrackable接口(SampleDataSeries、PointLineSeries、AreaSeries、HighLowSeries)的系列来求解。对于其他系列类型而言,光标不会自动追踪Y轴坐标。

将 LineSeriesCursor 对象添加到 LineSeriesCursors 集中。开启 SnapToPoints 可将光标从一点跳到另一点。用Style属性可设置光标追踪类型。当设置Style 为PointTracking后,可以使用任何追踪点的类型,甚至是位图图像。若使用 HairCrossTracking 类型,在线系列点的Y值处会绘制一条水平线。如果同一系列的多个点同时碰到光标位置,则线条绘制在最小点和最大值点的中间。

微信截图_20210730104747.png

图:线条系列游标:垂直点追踪光标(青色的线和十字),十字叉线追踪光标(红线)以及不带追踪的垂直全长光标(黄线)

开启 IndicateTrackingYRange 后,会绘制一条水平柱状,从碰到光标中间的点的最小值延伸到最大值。
微信截图_20210730104901.png

图:用Y轴区域指示的十字叉线光标(IndicateTrackingYRange = true).



解析LineSeriesCursor位置处的数据值

演示示例: Multi-channel cursor tracking

通过X屏幕坐标或Y轴值可求解实现ITrackable接口的系列。The series implementing ITrackable interface can be solved by X screen coordinate or by X axis value.

可跟踪的系列有精确和粗略两种数值求解方法。如果需要,精确的方法SolveYValueAtXValue循环遍历数据点并找到最近的数据点匹配。粗略法SolveYCoordAtXCoord使用缓存的系列渲染数据来求解匹配的Y屏幕坐标。



精确方法,用数据点数组根据X值求解Y值
[C#] 纯文本查看 复制代码
LineSeriesValueSolveResult result =
        series.SolveYValueAtXValue(cursor.ValueAtXAxis);

if (result.SolveStatus == LineSeriesSolveStatus.OK)
{
        //PointLineSeries在同一个X值可能有两个或多个点,如果这样,将其置于最小与最大中心
    yValue =(result.YMax + result.YMin)/ 2.0;
    return true;
}

注意! 当禁用 cursor.SnapToPoints 后, SolveYValueAtXValue返回与其相邻的点之间的内插值 (光标线和系列线的交叉点)
微信截图_20210730105148.png

图:禁用SnapToPoints后,SolveYValueAtXValue 内插入相邻数据点之间的值

粗略方法,用数据点数组根据X坐标求解Y屏幕坐标
[C#] 纯文本查看 复制代码
LineSeriesCoordinateSolveResult result = series.SolveYCoordAtXCoord((int)Math.Round(fCoordX));

if (result.SolveStatus == LineSeriesSolveStatus.OK)
{
        fCoordY = (result.CoordBottom + result.CoordTop)/ 2f;
        if (axisY.CoordToValue((int)Math.Round(fCoordY), out yValue)== false)
    {
                            return false;
        }
}



当系列包含很多数据点时,假设 > 100.000, 那么用粗略方法通常要快得多。如果图表的大小或Y段的像素高度很低,这种粗略方法可能非常不准确。

通过调用X和Y轴的CoordToValue方法,粗略方法的屏幕坐标可转换为轴值。

使用一个AnnotationXY对象显示在光标旁边的值是一个不错的方法,可参阅LightningChart数据可视化工具使用篇32-Annotations 注释

微信截图_20210730105710.png

图:LineSeriesCursor用于追踪PointLineSeries;值显示在一个AnnotationXY 对象中

从 FreeformPointLineSeries中求解数据值

FreeFormPointLineSeries实现精确和粗略的数值求解方法,非常类似于用以求解在LineSeriesCursor(用于实现ITrackable接口的系列)位置的数据值的方法。

注意! FreeformPointLineSeries 无法执行ITrackable 界面,因此无法用LineSeriesCursor追踪。
对于给定的X轴值,可用精确方法 SolveYValuesAtXValue 求解所有的Y值,并返回一个LineSeriesValueSolveResult结构的可迭代列表。

微信截图_20210730105835.png

对于给定的X屏幕坐标,可用粗略方法SolveYCoordsAtXCoord 求解所有Y屏幕坐标,并返回一个LineSeriesCoordinateSolveResult-结构的可迭代列表。
微信截图_20210730105912.png


如果给定的X轴值或X屏幕坐标在点之间碰上,结果将由插值值/坐标构成。




关于LineSeriesCursors章节就分享到这里了,如果在实际应用中遇到技术问题或需要帮助,可以扫描下方微信二维码回复学习
可免费领取一套全功能板LightningChart数据可视化控件

b5354b9436db344e96ae6ae2fa1fedf.jpg

后续我会不断更新LightingChart更详细的使用方法,写文不易,还望多多回复关注支持!谢谢!

最新版V10 LightningChart下载地址:猛击下载












回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-12-22 17:24

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表