LightningChart数据可视化图形控件使用篇19-IntensityGridSeries 强度网格

LightningChart数据可视化图形控件使用篇19-IntensityGridSeries 强度网格IntensityGridSeries 能够可视化M x N的节点数组,并通过指定的值域调色板着色。节点之间的颜色采用的是插值法。

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

IntensityGridSeries 强度网格

演示示例: Heat map; Spectrogram; Intensity grid mouse control

IntensityGridSeries 能够可视化M x N的节点数组,并通过指定的值域调色板着色。节点之间的颜色采用的是插值法。IntensityGridSeries 是在X和Y轴方向上均匀分布的矩形系列,可以渲染等高线、等高线标签以及线框图等。

微信截图_20220426114512.png 图:IntensityGridSeries 属性.

微信截图_20220426114548.png 图:IntensityGrid系列展示了一幅热度图示。图例框显示了值域调色板。

数据以二维数组的形式存储在Data属性中。每个数组项的类型都为IntensityPoint。每个节点的数据值存储在IntensityPoint结构的Value字段中,从而表明应使用ValueRangePalette中的那种颜色。

微信截图_20220426115221.png 图:IntensityGridSeries 节点; SizeX = 5, SizeY = 7. 节点距离自动计算,公式如下

微信截图_20220426115324.png

设置强度网格数据

• 用RangeMinX和RangeMaxX属性设置X范围,对指定的X轴的最大值和最小值进行排序。

• 用RangeMinY和RangeMaxY属性设置Y范围,对指定的Y轴的最大值和最小值进行排序。

• 设置 SizeX 和 SizeY 属性,将网格的尺寸规格指定为列和行。

• 为每个节点设置 Value:

用数据组索引的方法

for (int nodeIndexX = 0; nodeIndexX < columnCount; nodeIndexX ++)
{
        for (int nodeIndexY = 0; nodeIndexY < rowCount; nodeIndexY ++)
        {
            intensityValue =//一些高度值
            gridSeries.Data[iNodeX, iNodeY].Value = intensityValue;
        }
}
gridSeries.InvalidateData(); //准备好新值后通知刷新

另一种使用SetDataValue的方法

for (int nodeIndexX = 0; nodeIndexX < columnCount; nodeIndexX ++)
{
        for (int nodeIndexY = 0; nodeIndexY < rowCount; nodeIndexY ++)
        {
            intensityValue =//一些高度值
            gridSeries.SetDataValue(nodeIndexX, nodeIndexY,
                    0, // X值与网格无关
                    0, //Y值与网格无关
                    intensityValue,
                    Color.Green); //本例中没有使用源点颜色,所以这里用什么颜色都行
        }
}
gridSeries.InvalidateData(); //准备好新值后通知刷新

仅对现有网格设置值

当数据快速改变,而IntensityMesh的几何形状,或者IntensityGrid系列的 SizeX 或 SizeY 没有变化时,使用SetValuesData 方法是最好的。因为它可接受Double[][] 格式的数据组,能够快速滚动或对行或列重新排序。特别是结合 PixelRendering 属性(参阅第Error! Reference source not found.章节)一起使用时,会是一种非常有效的高分辨率滚动光谱图可视化方法。注意,当使用SetValuesData设置的外部数据数组使PixelRendering处于disabled状态时,Data属性不能为空。

仅对现有网格设置颜色

当数据快速改变,而IntensityMesh的几何形状,或者IntensityGrid系列的 SizeX 或 SizeY 没有变化时,使用SetColorsData方法是最好的。因为它可接受int[][]格式的值,例如GPU可直接接受的ARGB 值。采用这种数据数列,能够快速滚动或对行或列重新排序。特别是结合 PixelRendering 属性(参阅第Error! Reference source not found.章节)一起使用时,会是一种非常有效的高分辨率滚动光谱图可视化方法。注意,当使用SetColorsData设置的外部数据数组使PixelRendering处于disabled状态时,Data属性不能为空。

根据位图文件创建强度网格数据

演示示例:热度图(Heat map)

根据一幅位图图像创建一个面。可以用 SetHeightDataFromBitmap 方法来实现。通过系列 Data 数组属性可获得位图尺寸(如果没有使用反锯齿或重新采样)。就每个位图图像像素,分别对Red、Green和Blue值求和;和越大,该节点的数据值就越大;黑色和深色的值较低,而明亮和白色的值较高。

微信截图_20220426115836.png 图:源位图和计算所得的强度值数据。黑色区的值较低,明亮区的值较高。

填充样式

使用 Fill 属性来选择填充样式。有以下可选项:

• None: 此选项,不填充任何样式。采用线框网格或普通轮廓线时使用此项。

• FromSurfacePoints: 使用数据属性节点的颜色。

• Toned: 应用ToneColor

• Paletted:见下文

开启 FullInterpolation 属性后,会在填充中使用增强型插值方法。注意这将更多地用到 CPU 和 GPU。使用全插值,填充效果会更好,但只能在数据数组大小相当小的情况下才能看到。

渲染为像素图

开启 PixelRendering 属性后,节点渲染为像素或矩形。这是一个非常高性能的渲染类型,例如实时高分辨率热成像应用。注意,当选择此渲染模式时,许多其他选项将禁用,如等高线、线框和插值。如果使用对数轴,对数变换只适用于系列的尖角,位图中的像素保持均匀的间隔,并且不进行对数变换。

微信截图_20220426120349.png 图:PixelRendering = true.

ValueRangePalette (值域调色板)

用 ValueRangePalette 属性,可为值的着色定义几个颜色阶。 ValueRangePalette 可用于:

• Fill (参阅第 Error! Reference source not found.章节)

• Wireframe (见下文)

• Contour lines (下文)

为高度调色板定义几个阶。每一阶都有一个高度值和相对应的颜色。

注意! 可预编译并快速加载20个色阶。阶数越高,初始化图表时可能会有几秒钟的延迟。

微信截图_20220426120551.png 图:左侧, IntensityGridSeries Fill 设置为 Paletted ,并且Palette Type 设置为Gradient;右侧, Palette Type设置为Uniform

调色板用MinValue、Type 和 Steps 属性来定义。Type属性有两个选择: Uniform 和 Gradient。前面的等高线调色板( 查看图例框)显示为:

• MinValue: -50

• Type: Uniform

• Steps: • Steps[0]: MaxValue: -10, Color: Blue

• Steps[1]: MaxValue: 10, Color: Teal

• Steps[2]: MaxValue: 25, Color: Green

• Steps[3]: MaxValue: 35, Color: Yellow

• Steps[4]: MaxValue: 60, Color: Red

• Steps[5]: MaxValue: 100, Color: White 第一个阶值以下的值使用第一个阶的颜色着色。

Wireframe (线框)

用 WireframeType 选择线框样式。选项有:

None: 无线框

Wireframe: 纯色线框。用 WireframeLineStyle.Color 设置颜色。

WireframePaletted:在 ValueRangePalette 中为线框着色(参阅第上文)

WireframeSourcePointColored: 根据网格节点的颜色为线框着色

Dots: 在网格节点位置绘制实心色点

DotsPaletted: 在网格节点位置绘制点 ,并通过ValueRangePalette 着色

DotsSourcePointColored: 在网格节点位置绘制点 ,根据网格节点的颜色来着色

线框的线条样式(颜色、宽度、图案)可以用WireframeLineStyle来编辑。

注意!仅当设置WireframeLineStyle.Width = 1 且WireframeLineStyle.Pattern = Solid时,调色板着色的线框线条和点才可用。

Contour lines等高线

演示示例: Heatmap color spread; Contours with labels

设置填充和边框属性来使用等高线。通过设置ContourLineType属性,可以用不同的样式绘制等高线:

None: 不显示等高线

FastColorZones:线条绘制为细细的带状 。 适用于非常强的渲染,非常适合于持续更新或外形多样的曲面。陡峭值的变化以细线表示,而平缓坡度的高差以粗带表示。用ContourLineStyle.Color属性为每个线条定义采用同样的颜色。通过FastContourZoneRange属性可以设置带的宽度。值在Y轴范围内。

FastPalettedZones: 与 FastColorZones类似,但是要在ValueRangePalette选项中为线条着色 参阅本上文章节)。

ColorLine: 与 FastColorZones类似,但是等高线是实际的线;渲染需要更长的时间,不建议持续更新或动画表面采用。 用ContourLineStyle.Width属性可以调整线条的宽度。

PalettedLine: 与 ColorLine类似,但是要在ValueRangePalette 选项中为线条着色。

微信截图_20220426121224.png 图:左上角,ContourLineType = FastColorZones. 右上角,ContourLineType = FastPalettedZones 左下角,ContourLineType = ColorLine。 右下角,ContourLineType = PalettedLineContourLineType = ColorLine;

等高线标签

当等高线设置为可见时,可以在线路径上显示数值。

微信截图_20220426121429.png 图:ContourLineLabels属性及效果

用 LabelsNumberFormat 来自定义字符串格式化,例如设置小数位数。


关于LightningChart数据可视化图形控件使用篇19-IntensityGridSeries 强度网格 (线集)章节就分享到这里了。

如果在实际应用中遇到技术问题或需要帮助,可以添加下方微信号联系官方技术支持。

微信号:lightningchart_china

如果您想进一步使用LightningChart数据可视化图形控件,请添加后回复“学习”可免费领取一套全功能版LightningChart数据可视化控件。

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

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

今天的文章LightningChart数据可视化图形控件使用篇19-IntensityGridSeries 强度网格分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/22601.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注