LightningChart.js共享X轴下堆叠双Y轴折线图实现咨询
用LightningChart.js实现上下堆叠双Y轴折线图(共享X轴)
LightningChart.js的ChartXY默认Y轴仅支持左右布局,没法直接将Y轴移到上下位置,但有两种可行方案实现你要的效果:
方法一:双ChartXY组件上下拼接(推荐)
这是最直观、易维护的方案——用两个独立的ChartXY上下排列,同步它们的X轴范围,视觉上就像共享一个X轴:
- 创建两个图表实例,分别绑定到不同的DOM容器:
// 初始化上下两个图表 const chartTop = lightningChart().ChartXY({ container: 'chart-top' }) const chartBottom = lightningChart().ChartXY({ container: 'chart-bottom' }) - 隐藏底部图表的X轴,只保留顶部的X轴,营造共用X轴的视觉效果:
chartBottom.getDefaultAxisX().setVisible(false) - 同步X轴交互,确保拖拽、缩放时两个图表的X轴范围始终一致:
// 顶部X轴范围变化时同步到底部 chartTop.getDefaultAxisX().onScaleChange((start, end) => { chartBottom.getDefaultAxisX().setInterval(start, end) }) // 底部X轴范围变化时同步到顶部(可选,根据交互需求开启) chartBottom.getDefaultAxisX().onScaleChange((start, end) => { chartTop.getDefaultAxisX().setInterval(start, end) }) - 用CSS让容器无缝贴合,消除间距:
#chart-top, #chart-bottom { width: 100%; height: 50%; padding: 0; margin: 0; border: none; } - 分别向两个图表添加折线数据:
// 顶部图表的折线系列 const seriesTop = chartTop.addLineSeries() seriesTop.add([{x: 0, y: 10}, {x: 1, y: 15}, {x: 2, y: 8}]) // 底部图表的折线系列 const seriesBottom = chartBottom.addLineSeries() seriesBottom.add([{x: 0, y: 5}, {x: 1, y: 3}, {x: 2, y: 7}])
方法二:自定义轴位置(进阶)
如果不想用两个独立图表,也可以手动调整Y轴的绝对位置,但需要自行处理布局适配:
- 创建单个ChartXY并添加两个Y轴:
const chart = lightningChart().ChartXY() const yAxisTop = chart.addAxisY() const yAxisBottom = chart.addAxisY() - 设置Y轴的绝对位置,分别放到图表顶部和底部:
// 顶部Y轴固定在图表顶部区域 yAxisTop.setPosition({ type: 'absolute', x: 0, y: 0, width: chart.getInnerWidth(), height: 20 }) // 底部Y轴固定在图表底部区域 yAxisBottom.setPosition({ type: 'absolute', x: 0, y: chart.getInnerHeight() - 20, width: chart.getInnerWidth(), height: 20 }) - 将折线系列分别绑定到对应Y轴:
const seriesTop = chart.addLineSeries({ yAxis: yAxisTop }) const seriesBottom = chart.addLineSeries({ yAxis: yAxisBottom })
这种方法需要额外处理窗口大小变化时的轴位置更新,适合有高度定制化布局需求的场景。
内容的提问来源于stack exchange,提问作者abs66642
相关产品推荐
相关产品推荐

