开发者论坛

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

LightningChart数据可视化工具使用篇16-Y轴

[复制链接]

0

精华

10

贡献

2071

赞扬

帖子
141
软币
3968
在线时间
255 小时
注册时间
2021-1-21
发表于 2021-3-29 16:53:35 | 显示全部楼层 |阅读模式
Y 轴
Y轴的数量可以定义无限多个。可以使用YAxes 集合属性来添加Y轴。
[C#] 纯文本查看 复制代码
// 向图表添加Y轴
chart.ViewXY.YAxes.Add(new AxisY());


[C#] 纯文本查看 复制代码
AxisY axisY = new AxisY(_chart.ViewXY);
axisY.Title.Text = "Y-axis";
chart.ViewXY.YAxes.Add(axisY);


Y轴类属性
微信截图_20210329094313.png
图:Y 轴,各主要部分及网格

刻度值标签格式化
演示示例:(High-Low); 温度图(Temperature graph);多信道光标追踪(Multi-channel cursor tracking); 地图路线(Map route)
设置AutoFormatLabels 可以对小数计数、时间格式、或使用指数形式,进行自动计算,以适应可视范围。若要手动设置数值格式,应禁用AutoFormatLabels。
[C#] 纯文本查看 复制代码
chart.ViewXY.YAxes[0].AutoFormatLabels = false;


用LabelsNumberFormat可以设置数值的格式。
[C#] 纯文本查看 复制代码
// 总采用两位小数
chart.ViewXY.YAxes[0].LabelsNumberFormat = "0.00";


[C#] 纯文本查看 复制代码
// 用一位小数表示指数
chart.ViewXY.YAxes[0].LabelsNumberFormat = "0.0E+00";


利用LabelsTimeFormat 属性,可手动来设置时间格式。这支持任何秒分数的计数(例如“.ffffffff”),可以精确的缩放视图。
[C#] 纯文本查看 复制代码
// 显示小时、分钟、秒钟以及四位有效数字
_chart.ViewXY.YAxes[0].LabelsTimeFormat = "HH:mm.ss.ffff";


值类型
ValueType –属性控制着轴标签使用的是哪种值类型。
[C#] 纯文本查看 复制代码
// 更改轴的值类型
   chart.ViewXY.YAxes[0].ValueType = AxisValueType.DateTime;

ValueType 中具有以下几个选项:


Number
表示整数及分数时常用的数字格式。禁用AutoFormatLabels,会应用LabelsNumberFormat。此为默认值。


Time
表示时间。禁用AutoFormatLabels,会应用 LabelsTimeFormat。


DateTime
表示日期,可选时间。此选项与格式Time类似,禁用AutoFormatLabels ,也会应用 LabelsTimeFormat。
注意!为达到最佳精确度,建议在图表中显示的日期下方设置DateOriginYear, DateOriginMonth和DateOriginDay。使用DateTimeToAxisValue方法,从用于系列数据的一个.NET DateTime对象中获取轴值。

[C#] 纯文本查看 复制代码
// 将当前时间转换为Y值
data[0].Y = chart.ViewXY.YAxes[0].DateTimeToAxisValue(DateTime.Now);


MapCoordsDegrees
用十进制度数表示地图坐标。

示例: 40.446195° -79.948862°


MapCoordsDegNESW
用十进制度数表示地图坐标,附带N、E、S、W指示方向。
示例: 40.446195N 79.948862W


MapCoordsDegMinSecNESW
用度-弧分-弧秒表示地图坐标,附带N、E、S、W指示方向。
示例: 40°2'13"N 9°58'2"W


MapCoordsDegPadMinSecNESW
用度-弧分-弧秒表示地图坐标,附带N、E、S、W指示方向。若弧分和弧秒的值< 10,则用零填补位数。这种方法可以对齐数字,所以是在Y轴上呈现坐标的非常好的方法。

示例: 40°02'13"N 9°58'02"W


值域设置

通过向Minimum和Maximum属性赋值来设置一条轴的值域范围。Minimum 应该小于Maximum 。如果试图设置Minimum > Maximum时,或者相反,那么内部限制器将限制该值近似于另一个值。若要同时设置这两个值,可以使用SetRange(…)method 。在SetRange 中若Minimum > Maximum ,会自动翻转数值,以满足Minimum < Maximum。
[C#] 纯文本查看 复制代码
chart.ViewXY.YAxes[0].Minimum = 5;

[C#] 纯文本查看 复制代码
chart.ViewXY.YAxes[0].SetRange(5, 10);


当启用MouseScrolling 后,用鼠标拖动Y轴,可以直接滚动Y轴的值域范围。启用MouseScaling属性后,可以通过向上或向下拖动比例尺的尖端区域(轴的末端)来修改Minimum或Maximum。


[C#] 纯文本查看 复制代码
// 启用/禁用鼠标拖动
chart.ViewXY.YAxes[0].MouseScrolling = true;
chart.ViewXY.YAxes[0].MouseScaling = true;


恢复范围
当从右向左应用鼠标缩放时,可以使用轴的属性RangeRevertEnabled、RangeRevertMaximum和 RangeRevertMinimum将轴范围恢复到特定的值。


分度

分度由MajorDiv 和 MinorDiv 属性控制,可确定图表中主要和次要刻度的数量。例如,设置5个主要分度可以把Y轴划分为五个大小相等的间隔,这些间隔间由一个刻度和一条主网格线分隔。默认情况下,主刻度处于启用状态,次刻度禁用。


[C#] 纯文本查看 复制代码
// 启用主分度刻度
chart.ViewXY.YAxes[0].MinorDivTickStyle.Visible = true;


AutoDivSpacing –该属性可自动计算主要分度。默认为启用状态。间距根据值标签的字体大小和AutoDivSeparationPercent属性计算,尽可能做到人性化。设置AutoDivSeparationPercent可在值标签之间留下一定空间,但由于是基于标签的高度,这意味着增大值会减少主要分度的数量。AutoDivSpacing和AutoDivSeparationPercent不会影响次分度,反之,它们是根据MinorDivCount属性值在主要分度之间计算的。
[C#] 纯文本查看 复制代码
//每个标签之间留出值标签高度的100%
chart.ViewXY.YAxes[0].AutoDivSeparationPercent = 100;


如果禁用AutoDivSpacing ,分度间距可用MajorDiv和MajorDivCount属性进行手动控制。MajorDiv 通过大小控制间距,而MajorDivCount通过分度数量进行控制。无论MajorDiv如何设置,当轴的范围发生变化时,可以使用KeepDivCountOnRangeChange属性强制保持相同的分度数量。


[C#] 纯文本查看 复制代码
// 以20为单位的主刻度 (0, 20, 40, 60…)
chart.ViewXY.YAxes[0].MajorDiv = 20;


[C#] 纯文本查看 复制代码
// 准确显示5个主分度
chart.ViewXY.YAxes[0].MajorDivCount = 5;
//当轴的范围发生变化时,保持相同的分度数量
chart.ViewXY.YAxes[0].KeepDivCountOnRangeChange = true;


通过MajorDivTickStyle属性可以设置主分度的刻度样式。使用MajorDivTickStyle.Alignment 属性可编辑刻度和标签的方向。将值标签绘制在主分度刻度旁边。另外,用MinorDivTickStyle属性可以修改次分度属性。

[C#] 纯文本查看 复制代码
// 更改主分度刻度的的对齐方式和刻度长度
chart.ViewXY.YAxes[0].MajorDivTickStyle.Alignment = Alignment.Far;
chart.ViewXY.YAxes[0].MajorDivTickStyle.LineLength = 20;


网格
在分度刻度的垂直位置上绘制水平网格线。主分度刻度为主网格,次分度刻度为次网格。MajorGrid 和 MinorGrid 属性可用于编辑网格外观。


[C#] 纯文本查看 复制代码
// 修改网格样式
chart.ViewXY.YAxes[0].MajorGrid.Color = Color.FromArgb(100, 200, 200, 200);
chart.ViewXY.YAxes[0].MinorGrid.Pattern = LinePattern.Dash;


自定义刻度
演示示例:自定义轴刻度(Custom axis ticks);日期轴和自动以刻度(Date axes and custom ticks)

使用自定义刻度可以对轴刻度位置和标签文本进行手动设置。设置CustomTicksEnabled为true,并用CustomTicks属性列表定义刻度位置。
微信截图_20210329095401.png
图:自定义刻度属性
自定义刻度可以由刻度、网格或两者组成。使用Style可分别在Tick、Grid和TickAndGrid之间进行选择。通过Color 属性可以对刻度和网格的颜色进行修改。在Length 属性中可设置刻度长度。在轴的MajorGrid.Pattern和PatternScale属性中可以设置网格线的式样。
CustomAxisTick 有 AxisValue 和 LabelText 两个属性,可以定义位置和相应的标签文本。在使用自定义刻度时,禁用AutoFormatLabels可以显示自定义标签文本。另外,在通过代码设置新的自定义刻度后应调用InvalidateCustomTicks()。
[C#] 纯文本查看 复制代码
// 添加一自定义刻度为绿色刻度和网格线
_chart.ViewXY.YAxes[0].CustomTicks.Add(new CustomAxisTick(_chart.ViewXY.YAxes[0], 14, "Sell level\nUSD 14", 10, true, Colors.Green, CustomTickStyle.TickAndGrid));


[C#] 纯文本查看 复制代码
// 白色刻度,无网格线
_chart.ViewXY.YAxes[0].CustomTicks.Add(new CustomAxisTick(_chart.ViewXY.YAxes[0], 12.2, "Month\nmedian", 20, true, Colors.White, CustomTickStyle.Tick));


[C#] 纯文本查看 复制代码
// 红色刻度和网格线
_chart.ViewXY.YAxes[0].CustomTicks.Add(new CustomAxisTick(_chart.ViewXY.YAxes[0], 11, "Buy level\nUSD 11", 10, true, Colors.Red, CustomTickStyle.TickAndGrid));


[C#] 纯文本查看 复制代码
// 显示自定义刻度字符串
_chart.ViewXY.YAxes[0].CustomTicksEnabled = true;
_chart.ViewXY.YAxes[0].AutoFormatLabels = false;
_chart.ViewXY.YAxes[0].MajorGrid.Pattern = LinePattern.Dot; 
_chart.ViewXY.YAxes[0].InvalidateCustomTicks();

微信截图_20210329095651.png
图:Y轴上的自定义刻度;左侧,axis.AutoFormatLabels = false;右侧,AutoFormatLabels = True.

当设置CustomAxisTicksEnabled为true时,不显示次刻度或网格。要设置任意的次刻度或网格,只需在CustomTicks 集合中添加CustomAxisTicks,并设定颜色或线长度。

基于事件的轴值格式化
演示示例: Axis range edit, value labels; Business dashboard; Intensity persistent layer, signal

除去CustomAxisTicks之外,还可以通过FormatValueLabel事件来对轴的值标签进行格式化。它根据返回的字符串值,来修改对应的轴的每个值标签。事件的e.Axis和e.Value属性,可用于访问被修改的轴对象和标签值。但是和CustomAxisTicks不同的是,FormatValueLabel不能用以更改标签的位置,因为轴的分度设置仍然限定着位置。
[C#] 纯文本查看 复制代码
// 对Y轴设置订阅FormatValueLabel 事件
_chart.ViewXY.YAxes[0].FormatValueLabel += Chart_FormatValueLabel;

[C#] 纯文本查看 复制代码
// 在事件内修改值标签
private string Chart_FormatValueLabel(object sender, FormatValueLabelEventArgs e)
{
return "Y-axis value: " + e.Value.ToString();
}

微信截图_20210329095922.png
图:对下方的Y轴设置FormatAxisValues; 值显示为”Y-axis value: ” + 当前值
FormatValueLabel 可用于Y轴和X轴,以及在View3D视图中的每条轴。

X轴与Y轴翻转
X 轴与Y轴可以翻转显示,这样的话,最小值会高于/大于最大值。举例来说,当要从外观上消除分配给Y轴的系列数据极性时,这是一个非常方便的功能。
[C#] 纯文本查看 复制代码
chart.ViewXY.YAxes[0].Reversed = true;

对数轴
演示示例:对数轴(Logarithmic axes);最小对数值(Minimal logarithmic values);Log axis fit, ignore zeros


将ScaleType 设置为Logarithmic ,可使用对数显示。使用LogBase属性设置对数的底。图表还可以显示0…1之间的对数值。使用LogZeroClamp 设置在轴中设置最小值。若要使用对数轴的典型最小值,则设置为1。若要使用低于0的值,则适当设置一个小的正数值,如1.0E-20,最好适合所使用的数据。另外,设置LogLabelsType可对刻度标签使用特殊格式。
[C#] 纯文本查看 复制代码
// 设置对数轴
chart.ViewXY.YAxes[0].ScaleType = ScaleType.Logarithmic;
chart.ViewXY.YAxes[0].LogBase = 10;
chart.ViewXY.YAxes[0].LogZeroClamp = 1;
chart.ViewXY.YAxes[0].LogLabelsType = LogLabelsType.Log10Exponential;


以10为底的指数表示
微信截图_20210329100236.png
图: 对数 Y 轴,值接近于零。设置LogZeroClamp 为 1.0E-20;设置 LogBase 为 10,设置 LogLabelsType 为 Log10Exponential, 以1.0E表示法来显示值
自然对数
微信截图_20210329160145.png
图:自然对数视图。设置 LogBase 为 Math.E;设置 LogLabelsType 为 LogE_MultiplesOfNeper.

数轴值与屏幕坐标的转换
轴的方法,可以将轴的值转换为屏幕坐标,以及将屏幕坐标转换为轴值。使用ValueToCoord 方法可以把一个轴的值转换为一个屏幕坐标,使用CoordToValue可以把一个屏幕坐标转换为一个轴值。如果首选的是像素点(pixels),不是DIPs,可以设置 UseDIP = False。
[C#] 纯文本查看 复制代码
float screenCoordinate = _chart.ViewXY.XAxes[0].ValueToCoord(axisValue);



在图表有了最终尺寸大小后有ValueToCoord和CoordToValue两个方法可用。例如,订阅AfterRendering事件来确保图表得到充分渲染。


一次要转换多个值或者坐标,可以使用ValuesToCoords 和 CoordsToValues methods。它们以双数组的形式接受/返回轴值(X轴CoordToValue为整数数组),并以浮点型数组接受/返回屏幕坐标。
[C#] 纯文本查看 复制代码
chart.ViewXY.YAxes[0].CoordsToValues(coordArray, out doubleValueArray, false);


MiniScale
MiniScale 是的X和Y轴的微型替代。在某些应用程序中,这种比例表示形式更适合用于快速直观地查看数据量,或者在没有空间放下实际的坐标轴时候也适用。通过Visible –属性可以激活MiniScale。MiniScale 是Y轴类的一个子属性。不过,X的比例大小总是绑定到第一条X轴(XAxes[0])。修改X和Y轴的Units.Text属性可以设置单位可见。MiniScale不能与对数轴一起使用。
[C#] 纯文本查看 复制代码
// 配置 MiniScale
chart.ViewXY.YAxes[0].MiniScale.Visible = true;
chart.ViewXY.YAxes[0].MiniScale.VerticalAlign = AlignmentVertical.Bottom;
chart.ViewXY.YAxes[0].MiniScale.Offset.SetValues(-10, -30);
chart.ViewXY.YAxes[0].MiniScale.PreferredSize = new Size(30, 30);
chart.ViewXY.XAxes[0].Units.Text = "s";
chart.ViewXY.YAxes[0].Units.Text = "μV";

微信截图_20210329160357.png
图:图表右下角是MiniScale

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

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

回复

使用道具 举报

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

GMT+8, 2024-4-16 20:39

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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