You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Highstock实时数据场景下dataGrouping功能异常问题排查

解决Highstock实时数据每小时展示单一点的问题

核心问题分析

当前配置存在三个关键问题:

  • dataGrouping.units 设置为15秒分组,与每小时展示一个点的需求不匹配
  • 线图默认会连接所有分组点,导致图表可读性差
  • pointInterval 和 pointStart 与强制分组逻辑冲突,导致无法自动创建新分组

修改后的配置方案

const options = {
    plotOptions: {
        series: {
            // 改为散点图,仅显示分组后的点,无连线
            type: 'scatter',
            dataGrouping: {
                anchor: 'end',
                approximation: function (groupData) {
                    // 取每组最后一个数据点(实时最新值)
                    return groupData[groupData.length - 1];
                },
                enabled: true,
                forced: true,
                // 设置为每小时分组,匹配需求
                units: [['hour', [1]]],
            },
            marker: {
                // 启用标记点,确保分组点可见
                enabled: true,
                radius: 2.5,
            },
            // 移除pointInterval和pointStart,避免干扰自动分组逻辑
        },
    },
    // 可选:如果需要保留线图但分组间不连线,替换type为'line'并添加gapSize
    // plotOptions.series.type = 'line',
    // plotOptions.series.gapSize = 3500000; // 略小于1小时,避免连接跨小时的点
};

实时数据推送注意事项

添加新WebSocket数据点时,使用正确的API:

// 假设series是图表的系列实例
series.addPoint(
    { x: new Date().getTime(), y: latestEnergyData },
    true, // 重绘图表
    false // 不移除旧数据点
);

关键调整说明

  1. 修正分组维度:将units改为['hour', [1]],强制按小时分组
  2. 移除冲突配置:删除pointInterval和pointStart,让dataGrouping自动处理时间轴,确保新小时到来时自动创建新分组
  3. 解决连线问题:
    • 方案1(推荐):将系列类型改为scatter,仅显示分组后的标记点,无连线
    • 方案2:保留line类型,添加gapSize设置,当点间隔超过阈值时不连线
  4. 启用标记点:开启marker.enabled,确保每个分组的最新点清晰可见

内容的提问来源于stack exchange,提问作者D4sK43nguru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 07:45:34