LightningChart中heatmapGridSeries能否叠加到line chart上使用?
实现方案
你需要的效果完全可以通过LightningChart的heatmapGridSeries实现,核心配置步骤如下:
- 层级配置:确保heatmapGridSeries的渲染层级高于已有的line series,避免色带被折线遮挡。可以调用图表实例的
setSeriesOrder方法,将heatmapSeries的排序放在lineSeries之后即可。 - 区间配色规则配置:使用内置的
PalettedFill调色板实现按数值区间自动匹配带透明度的颜色,你只需要提前定义好每个区间的阈值和对应带透明度的RGBA颜色,heatmap会自动根据单元格数值匹配对应颜色,无需手动判断。 - 坐标对齐配置:heatmapGridSeries需要和line series绑定同一套X/Y轴,设置heatmap的坐标起始/结束范围和line series的显示区间对齐,避免色带和折线出现位置偏移。如果只需要显示单条色带,可根据需求调整heatmap的行列数、高度数值。
参考代码片段
// 示例基于LightningChart JS v4.x版本 import { lightningChart, PalettedFill, ColorRGBA } from '@arction/lcjs' // 省略图表初始化、已有line series创建逻辑 const chart = lightningChart().ChartXY() const lineSeries = chart.addLineSeries() // 此处省略line series的数据添加逻辑 // 1. 定义区间调色板 const rangeColorPalette = new PalettedFill({ lookUpProperty: 'value', // stops按区间配置,相同阈值的两个连续stop可实现阶梯式跳色,无渐变过渡 stops: [ { value: 0, color: ColorRGBA(255, 165, 0, 120) }, // 0-100区间 橙色 透明度约47% { value: 100, color: ColorRGBA(255, 165, 0, 120) }, { value: 100, color: ColorRGBA(0, 255, 0, 120) }, // 100-200区间 绿色 透明度约47% { value: 200, color: ColorRGBA(0, 255, 0, 120) }, // 后续可按需求继续添加其他区间的配色规则 ] }) // 2. 创建heatmapGridSeries const heatmapSeries = chart.addHeatmapGridSeries({ columns: 100, // 列数可根据X轴范围精度调整,数值越高色带边缘越平滑 rows: 1, // 单条色带可设为1 start: { x: chart.getDefaultAxisX().getInterval().start, y: 600 }, // 替换为你的色带Y轴起始位置 end: { x: chart.getDefaultAxisX().getInterval().end, y: 650 }, // 替换为你的色带Y轴结束位置 fillStyle: rangeColorPalette }) // 3. 传入heatmap数值,调整渲染层级 heatmapSeries.invalidateIntensityValues(/* 此处传入你的0-200+区间的二维数值数组 */) chart.setSeriesOrder([lineSeries, heatmapSeries])
注意事项
- 透明度可通过修改ColorRGBA的第四个参数调整,数值范围0-255,数值越低透明度越高
- 如果需要色带跟随折线数据动态更新,可监听轴区间变化事件,同步更新heatmap的start/end属性和intensity数值即可
内容的提问来源于stack exchange,提问作者Gracie williams
相关产品推荐
相关产品推荐

