本文已参与「新人创作礼」活动,一起开启掘金创作之路。
X 轴
X轴分度和网格设置与Y轴的设置一样。所以之前章节所介绍的属性与功能也同样可以应用到X轴。但是,X轴有几个与实时滚动相关的属性,这是Y轴没有的。
实时监控滚动
演示实例: Billion Points; (温度图)Temperature graph; Thread-fed multi-channel data
当制定一个实时监控方案时,必须滚动X轴来正确显示当前的监控位置,这通常是最新信号点的时间戳。在将新的信号点设置为一个系列之后,将ScrollPosition属性设置为最新的一次时间戳。
// 将实时监控滚动条位置设置为最新的X值
chart.ViewXY.XAxes[0].ScrollPosition = latestDataPoint.X;
LightningChart中有几个滚动模式可选,使用ScrollMode属性可以进行选择。
chart.ViewXY.XAxis[0].ScrollMode = XAxisScrollMode.Scrolling;
None (不滚动)
此为默认选项。当设置ScrollPosition为None时,即应用不滚动模式。在不适用实时监控的时候通常选择这一项。
Stepping (步进)
当采集到的数据到达X轴的末端时,带有所有系列数据的轴按步进间隔向左移动。每当到达X轴末端时,都执行一次移动。步进值的范围可以通过定义SteppingInterval属性来设置。
chart.ViewXY.XAxes[0].SteppingInterval = 3;
图:X 轴的滚动模式:步进stepping
Scrolling(滚动)
X轴开始保持静止状态,待滚动间隔到达设定值后,带有所有系列的X轴会连续向左移动。如果要在滚动位置抵达X轴末端时再让滚动生效,则设置ScrollingGap 为0。ScrollingGap属性的定义为图形宽度的百分比。
chart.ViewXY.XAxes[0].ScrollingGap = 15;
图:X轴滚动模式:滚动 scrolling
滚动过程中波形稳定
当使用series.AddPoints()、AddValues()或 AddSamples()-方法后,LightningChart支持实时信号的增量渲染数据构建。这意味着仅从新的数据部分计算渲染数据,并与现有的渲染数据相结合。
PointLineSeries、SampleDataSeries、AreaSeries 和 HighLowSeries 具有一个特定的属性用于ScrollMode = Scrolling,可影响滚动系列的视觉稳定性,保持波形特性。该属性叫做 ScrollingStabilizing.
chart.ViewXY.PointLineSeries[0].ScrollingStabilizing = true;
在启用ScrollingStabilizing后,浮点坐标四舍五入到最近的整数坐标,结果得到一个视觉上稳定的、无波动的波形。多数情况下,这是一个最佳的方法。不过,在四舍五入坐标时,相位信息可能会有略微的失真。
在启用 ScrollingStabilizing 后,数据渲染使用浮点坐标,而当GPU决定像素坐标时,浮点坐标以轻微波动的波形出现。这带来了更好的视觉特性,特别是在显示正弦数据时,几乎每隔一个像素就会有一次上下转变。
要使用增量渲染数据构造,须按如下方式添加新点
chart.BeginUpdate();
series.AddPoints(array,false);
xAxis.ScrollPosition = latestXValue;
chart.EndUpdate();
调用InvalidateData(),可以随时刷新渲染数据
chart.BeginUpdate();
series.AddPoints(array,false);
series.InvalidateData();
xAxis.ScrollPosition = latestXValue;
chart.EndUpdate();
表:滚动过程中波形稳定
扫掠
在扫描模式下的实时监控视图可能是用户友好度最高的。该模式中使用两条X轴。第一条轴采集满后,出现一个扫描间隔,然后第二个X轴扫过第一个。两个X轴都显示各自的值标签。 SweepingGap 属性的定义为图形宽度的百分比。
chart.ViewXY.XAxes[0].SweepingGap = 5;
图: X轴滚动模式: 扫掠
触发(Triggering)
X轴位置由超过或低于触发位准的系列值决定。使用 Triggering 属性可设置触发选项。通过启用Triggering.TriggeringActive属性可以设置触发为激活状态。
必须将一个系列设置为触发系列。可接受的触发系列类型有PointLineSeries 和 SampleDataSeries。使用Triggering.TriggerLevel可设置触发Y level 。使用Triggering.TriggeringXPosition可按图形宽度的百分比的方式,确定水平绘制位准触发点的位置。
图:X轴滚动模式:由静态X网格触发
当使用触发的X轴滚动位置时,通常不适合显示带有值和网格的常规X轴,因为该位置根据输入的系列数据会从一个位置跳到另一个位置。
• 方法 1:使用静态X网格。通过设置XAxis.Visible = false(或者LabelsVisible = false, MajorGrid.Visible = false 并且 MinorGrid.Visible = false),可以隐藏常规的X轴对象。然后,设置Triggering.StaticMajorXGridOptions和Triggering.StaticMinorXGridOptions来显示静态X网格。
• 方法 2:使用首选刻度创建另一条X轴,并设置为ViewXY 集合 。不要为该系列 分配第二条X轴。
对于刻度指示,使用Y轴的MiniScale 或定义一个Annotation 对象(参阅第 6.21章节)来显示值域范围 ,例如“200 ms/div”。
刻度中断(Scale breaks)
演示示例: Scale breaks; Stock course with previous close
从第8版本开始,X轴支持ScaleBreaks。采用ScaleBreaks 可以将特定的X值域范围排除在外,例如不活跃的交易时间/日期或机器停产时间。所有分配到指定X轴的系列都被剪切,包括轴和标签。
可以使用ScaleBreaks的情况是有限制的:必须设置ScrollMode 为 ‘None’ ,同时设置 ScaleType 为 ‘Linear’。
在X轴的ScaleBreaks 集合中插入ScaleBreak 对象。
图:ScaleBreak 属性
用Begin 和End 可以指定中断的范围,二者是以轴值的形式设置,不是DateTimes 。如果要采用DateTimes可以使用axis.DateTimeToAxisValue来进行转换。
间隔宽度可以用Gap进行调整,如果不显示间隔也可以设为0。用Style 可以对间隔外观进行配置。
• 设置 Style = ‘Fill’,用Fill属性调整填充样式。
• 设置Style = ‘DiagonalLineUp’ 或 ‘DiagonalLineDown’,用DiagonalLineSpacing和LineStyle属性调整外观。
设置 Enabled = False,可取消中断。
PointLineSeries、 AreaSeries 和 HighLowSeries 具有 ContinuousOverScaleBreak 属性。启动该属性后,可以在间距之间绘制一条连接线。
图:原始交易数据,周一至周五,上午10点至下午6点。没有应用ScaleBreaks。大部分时间范围内并没有数据,这是因为证券交易所已经关闭,难以看到必要的信息。PointLineSeries 从收市值开始跳变。
图:应用ScaleBreaks可消除无活动交易时间。这样就有更多屏幕空间能显示出重要的数据。Style = Fill, Gap = 10. PointLineSeries从收市值开始跳变, PointLineSeries.ContinuousOverScaleBreak = True.
图:在无活动交易时间应用ScaleBreaks; Style = DiagonalLinesUp, Gap = 20. PointLineSeries.ContinuousOverScaleBreak = True.
图:PointLineSeries.ContinuousOverScaleBreak = False. 在间隔间,前一点到下一点的线不相连。相反,这些线继续保持原来的方向,就像没有定义尺度中断一样。
关于LightningChart数据可视化图形控件使用篇7-ViewXY·X轴章节就分享到这里了。
如果在实际应用中遇到技术问题或需要帮助,可以添加下方微信号联系官方技术支持。
微信号:lightningchart_china
如果您想进一步使用LightningChart数据可视化图形控件,请添加后回复“学习”可免费领取一套全功能版LightningChart数据可视化控件。
后续我会不断更新LightingChart更详细的使用方法,写文不易,还望多多回复关注支持!谢谢!
最新版V10 LightningChart下载地址:猛击下载