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值处会绘制一条水平线。如果同一系列的多个点同时碰到光标位置,则线条绘制在最小点和最大值点的中间。
图:线条系列游标:垂直点追踪光标(青色的线和十字),十字叉线追踪光标(红线)以及不带追踪的垂直全长光标(黄线)
开启 IndicateTrackingYRange 后,会绘制一条水平柱状,从碰到光标中间的点的最小值延伸到最大值。
图:用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返回与其相邻的点之间的内插值 (光标线和系列线的交叉点)
图:禁用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 注释。
图:LineSeriesCursor用于追踪PointLineSeries;值显示在一个AnnotationXY 对象中
从 FreeformPointLineSeries中求解数据值
FreeFormPointLineSeries实现精确和粗略的数值求解方法,非常类似于用以求解在LineSeriesCursor(用于实现ITrackable接口的系列)位置的数据值的方法。
注意! FreeformPointLineSeries 无法执行ITrackable 界面,因此无法用LineSeriesCursor追踪。
对于给定的X轴值,可用精确方法 SolveYValuesAtXValue 求解所有的Y值,并返回一个LineSeriesValueSolveResult结构的可迭代列表。
对于给定的X屏幕坐标,可用粗略方法SolveYCoordsAtXCoord 求解所有Y屏幕坐标,并返回一个LineSeriesCoordinateSolveResult-结构的可迭代列表。
如果给定的X轴值或X屏幕坐标在点之间碰上,结果将由插值值/坐标构成。
关于LineSeriesCursors章节就分享到这里了,如果在实际应用中遇到技术问题或需要帮助,可以扫描下方微信二维码回复“学习” 可免费领取一套全功能板LightningChart数据可视化控件
后续我会不断更新LightingChart更详细的使用方法,写文不易,还望多多回复关注支持!谢谢! 最新版V10 LightningChart下载地址:猛击下载
|