开发者论坛

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

LightningChart数据可视化工具使用篇17-X轴

[复制链接]

0

精华

10

贡献

2071

赞扬

帖子
141
软币
3968
在线时间
255 小时
注册时间
2021-1-21
发表于 2021-4-1 11:27:14 | 显示全部楼层 |阅读模式
X 轴
X轴分度和网格设置与Y轴的设置一样。所以之前章节所介绍的属性与功能也同样可以应用到X轴。但是,X轴有几个与实时滚动相关的属性,这是Y轴没有的。


实时监控滚动
演示实例: Billion Points; (温度图)Temperature graph; Thread-fed multi-channel data

当制定一个实时监控方案时,必须滚动X轴来正确显示当前的监控位置,这通常是最新信号点的时间戳。在将新的信号点设置为一个系列之后,将ScrollPosition属性设置为最新的一次时间戳。
[C#] 纯文本查看 复制代码
// 将实时监控滚动条位置设置为最新的X值
chart.ViewXY.XAxes[0].ScrollPosition = latestDataPoint.X;


LightningChart中有几个滚动模式可选,使用ScrollMode属性可以进行选择。
[C#] 纯文本查看 复制代码
chart.ViewXY.XAxis[0].ScrollMode = XAxisScrollMode.Scrolling;


None (不滚动)
此为默认选项。当设置ScrollPosition为None时,即应用不滚动模式。在不适用实时监控的时候通常选择这一项。


Stepping (步进)
当采集到的数据到达X轴的末端时,带有所有系列数据的轴按步进间隔向左移动。每当到达X轴末端时,都执行一次移动。步进值的范围可以通过定义SteppingInterval属性来设置。
[C#] 纯文本查看 复制代码
chart.ViewXY.XAxes[0].SteppingInterval = 3;


微信截图_20210401103941.png
图:X 轴的滚动模式:步进stepping

Scrolling(滚动)
X轴开始保持静止状态,待滚动间隔到达设定值后,带有所有系列的X轴会连续向左移动。如果要在滚动位置抵达X轴末端时再让滚动生效,则设置ScrollingGap 为0。ScrollingGap属性的定义为图形宽度的百分比。
微信截图_20210401104116.png
图:X轴滚动模式:滚动 scrolling

滚动过程中波形稳定
当使用series.AddPoints()、AddValues()或 AddSamples()-方法后,LightningChart支持实时信号的增量渲染数据构建。这意味着仅从新的数据部分计算渲染数据,并与现有的渲染数据相结合。
PointLineSeries、SampleDataSeries、AreaSeries 和 HighLowSeries 具有一个特定的属性用于ScrollMode = Scrolling,可影响滚动系列的视觉稳定性,保持波形质量。该属性叫做 ScrollingStabilizing.
[C#] 纯文本查看 复制代码
chart.ViewXY.PointLineSeries[0].ScrollingStabilizing = true;


在启用ScrollingStabilizing后,浮点坐标四舍五入到最近的整数坐标,结果得到一个视觉上稳定的、无波动的波形。多数情况下,这是一个最佳的方法。不过,在四舍五入坐标时,相位信息可能会有略微的失真。


在启用 ScrollingStabilizing 后,数据渲染使用浮点坐标,而当GPU决定像素坐标时,浮点坐标以轻微波动的波形出现。这带来了更好的视觉质量,特别是在显示正弦数据时,几乎每隔一个像素就会有一次上下转变。


要使用增量渲染数据构造,须按如下方式添加新点
[C#] 纯文本查看 复制代码
chart.BeginUpdate();
series.AddPoints(array,false);
xAxis.ScrollPosition = latestXValue;
chart.EndUpdate();



调用InvalidateData(),可以随时刷新渲染数据
[C#] 纯文本查看 复制代码
chart.BeginUpdate();
series.AddPoints(array,false);
series.InvalidateData();
xAxis.ScrollPosition = latestXValue;
chart.EndUpdate();


微信截图_20210401104338.png
表: 滚动过程中波形稳定


扫掠
在扫描模式下的实时监控视图可能是用户友好度最高的。该模式中使用两条X轴。第一条轴采集满后,出现一个扫描间隔,然后第二个X轴扫过第一个。两个X轴都显示各自的值标签。 SweepingGap 属性的定义为图形宽度的百分比。
[C#] 纯文本查看 复制代码
chart.ViewXY.XAxes[0].SweepingGap = 5;


微信截图_20210401104423.png
图:X轴滚动模式: 扫掠

触发Triggering
X轴位置由超过或低于触发位准的系列值决定。使用 Triggering 属性可设置触发选项。通过启用Triggering.TriggeringActive属性可以设置触发为激活状态。

必须将一个系列设置为触发系列。可接受的触发系列类型有PointLineSeries 和 SampleDataSeries。使用Triggering.TriggerLevel可设置触发Y level 。使用Triggering.TriggeringXPosition可按图形宽度的百分比的方式,确定水平绘制位准触发点的位置。

微信截图_20210401104534.png
图: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 对象(参阅LightningChart数据可视化工具使用篇16-Y轴)来显示值域范围 ,例如“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 对象。
微信截图_20210401104851.png
图:ScaleBreak 属性

BeginEnd 可以指定中断的范围,二者是以轴值的形式设置,不是DateTimes 。如果要采用DateTimes可以使用axis.DateTimeToAxisValue来进行转换。


间隔宽度可以用Gap进行调整,如果不显示间隔也可以设为0。用Style 可以对间隔外观进行配置。
• 设置 Style = ‘Fill’,用Fill属性调整填充样式。
• 设置Style = ‘DiagonalLineUp’‘DiagonalLineDown’,用DiagonalLineSpacing和LineStyle属性调整外观。


设置 Enabled = False,可取消中断。


PointLineSeries、 AreaSeriesHighLowSeries 具有 ContinuousOverScaleBreak 属性。启动该属性后,可以在间距之间绘制一条连接线。
微信截图_20210401104947.png
图:原始交易数据,周一至周五,上午10点至下午6点。没有应用ScaleBreaks。大部分时间范围内并没有数据,这是因为证券交易所已经关闭,难以看到必要的信息。PointLineSeries 从收市值开始跳变。
微信截图_20210401105100.png
图:应用ScaleBreaks可消除无活动交易时间。这样就有更多屏幕空间能显示出重要的数据。Style = Fill, Gap = 10. PointLineSeries从收市值开始跳变, PointLineSeries.ContinuousOverScaleBreak = True.
微信截图_20210401105138.png
图:在无活动交易时间应用ScaleBreaks; Style = DiagonalLinesUp, Gap = 20. PointLineSeries.ContinuousOverScaleBreak = True.
微信截图_20210401105212.png
图:PointLineSeries.ContinuousOverScaleBreak = False. 在间隔间,前一点到下一点的线不相连。相反,这些线继续保持原来的方向,就像没有定义尺度中断一样。

图边距

图边距是图形区域周围的空白处。除了注释、图例框和图表标题之外,视图的所有内容都显示在图边距内。
微信截图_20210401105306.png
图:图表区域周围为图边距。图边距内填置具体内容。图边距上可以放置图表标题和图例框。

AutoAdjustMargins 设为 enabled后,会调整图表尺寸,腾出足够的空间放置所有的轴和图表标题。设为disabled后,应用ViewXY.Margins 属性可以手动设定图边距。


默认情况下,在图表区域的图边框位置绘制可以自定义绘制一个矩形边框 Border。通过设置Border.Visible = False可以关闭该边框。Border 的颜色也可以通过Color属性更改。另外,通过设置RenderBehindSeriesTrue,也可以在系列后渲染Border


在运行期间,通过调用ViewXY.GetMarginsRect方法method,可以恢复以像素为单位的图边距矩形,适用于自动和手动图边距。当需要执行基于屏幕坐标的计算或对象放置时,这非常有用。



ViewXY.MarginsChanged事件可以设置为在图边距矩形变更时(例如调整其大小)触发。




遇到使用问题,关注Arction公众号可以跟官方技术支持在线聊天解决,技术支持这一块儿Lightningchart做的还是不错的。
LightningChar0t.png
后续我会不断更新LightingChart更详细的使用方法,搬运不易,还望多多回复关注支持!谢谢!

最新版V10 LightningChart下载地址:https://katechanresearch.com/xzzx

回复

使用道具 举报

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

GMT+8, 2024-4-27 08:02

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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