在绝大多数Highcharts项目中,开发人员都会经历这样一个过程:

从数据库查询数据 →转换为JSON格式 →重新组织为series.data →最后渲染图表。

例如:

数据库中的数据可能是:

Year Revenue Cost
2020 12 8
2021 15 10
2022 18 12
2023 22 15

而最终为了适配图表,开发人员通常需要转换成:

series: [{
    name: 'Revenue',
    data: [12,15,18,22]
},{
    name: 'Cost',
    data: [8,10,12,15]
}]

看似简单,但在企业级项目中,这种方式会带来大量重复工作:

  • 数据转换代码越来越多

  • 多个图表重复使用同一数据源

  • API返回结构频繁变化

  • 数据维护成本不断增加

在Highcharts V13中,官方推出全新的 DataTable数据模型,让图表第一次能够直接理解表格数据。

这不仅仅是一个新的数据接口,更代表Highcharts正在从“图表组件”向“数据驱动可视化平台”演进。

为什么Series.Data逐渐暴露局限性?

过去十多年中:

series.data

一直是Highcharts最经典的数据配置方式。

例如:

series: [{
    data: [29, 71, 106, 129]
}]

对于演示案例非常方便。

但在真实业务系统中,数据往往来自:

  • MySQL

  • Oracle

  • PostgreSQL

  • SQL Server

  • REST API

  • CSV文件

  • Excel文件

  • 数据仓库

  • BI平台

这些数据天然就是:表格结构(Tabular Data)而不是Series结构。

开发者不得不进行大量转换工作。

本质上:图表在适应数据,而不是数据驱动图表。

DataTable:让数据保持原来的样子

Highcharts V13引入全新的:

Highcharts.DataTable

开发者可以直接使用表格数据。

例如:

const dataTable =
new Highcharts.DataTable({
    columns: {
        Year: [2020,2021,2022,2023],
        Cost: [11,13,12,14],
        Revenue: [12,15,14,18]
    }
});

这里的数据结构与数据库表结构高度一致。

不需要拆分。

不需要转换。

不需要重新组织。

一张表驱动多个系列

DataTable最大的优势之一是:一个数据源驱动多个Series。

例如:

Highcharts.chart('container', {

    dataTable,

    plotOptions: {
        series: {
            dataMapping: {
                x: 'Year'
            }
        }
    },

    series: [{
        dataMapping: {
            y: 'Cost'
        }
    },{
        dataMapping: {
            y: 'Revenue'
        }
    }]
});

这里:

Year

作为共享X轴。

Cost
Revenue

分别映射为两个系列。

最终生成:

  • 成本趋势线

  • 收入趋势线

整个过程无需重复数据数组。

Data Mapping:图表与数据的桥梁

DataTable真正的核心能力并不是表格本身。

而是:

dataMapping

映射机制。

例如:

dataMapping: {
    x: 'Year',
    y: 'Revenue'
}

意味着:

数据列 图表字段
Year X轴
Revenue Y轴

开发者无需关心数据存储方式。

只需告诉Highcharts:

哪一列代表什么。

这与现代BI工具的数据建模思路非常接近。

自动映射机制

如果数据列名称符合标准命名规范:

columns: {
    x: [...],
    y: [...],
    name: [...]
}

Highcharts甚至可以自动识别。

无需额外配置:

dataMapping

直接完成映射。

进一步减少代码量。

Chart级DataTable

在V13中:

DataTable可以挂载到整个图表。

例如:

Highcharts.chart('container', {
    dataTable: dataTable
});

优势:所有Series共享同一数据源。

特别适合:

  • BI报表

  • 数据驾驶舱

  • 分析平台

等场景。

Series级DataTable

如果某些Series拥有独立数据源。

也可以:

series: [{
    dataTable: ...
}]

例如:

series: [{
    name: 'Revenue',
    dataTable: revenueTable
},{
    name: 'Cost',
    dataTable: costTable
}]

这样:每个Series独立维护,适用于复杂业务场景。

TypedArray支持:性能进一步提升

对于工业互联网和金融系统而言:

性能始终是重点关注问题。

Highcharts V13允许:

Uint8Array
Uint16Array
Float32Array
Float64Array

等TypedArray直接作为列数据。

例如:

columns: {
    x: new Uint16Array([...]),
    y: new Uint8Array([...])
}

这意味着:

  • 内存占用更低

  • 数据处理效率更高

  • 浏览器垃圾回收压力更小

尤其适合:

  • 实时监控

  • 高频数据采集

  • 大规模数据分析

场景。

50万数据点性能提升约20%

根据Highcharts官方测试:

在结合Boost模块使用时:

500,000 Points

数据量场景下:

DataTable + TypedArray

相比传统:

series.data

方案可获得约:

20%
Performance Gain

性能提升。

对于工业监控平台而言:

这是非常可观的优化。

为什么DataTable更适合企业项目?

传统模式:

数据库
 ↓
接口
 ↓
JSON
 ↓
转换
 ↓
Series
 ↓
图表

DataTable模式:

数据库
 ↓
DataTable
 ↓
Mapping
 ↓
图表

整个链路更短。

结构更清晰。

维护成本更低。

工业互联网应用场景

例如设备运行数据:

时间 温度 压力 电流
08:00 35 0.5 12
08:01 36 0.6 13

通过一个DataTable:

即可生成:

  • 温度曲线

  • 压力曲线

  • 电流曲线

无需维护三套数据。

金融分析场景

股票数据:

Date Open High Low Close

可以直接映射:

  • K线图

  • 成交量图

  • 技术指标图

实现统一数据管理。

BI与数据中台场景

对于企业数据中台而言:

一个数据集往往服务于:

  • 柱状图

  • 折线图

  • 饼图

  • 地图

过去需要分别转换。

现在:

一个DataTable即可支持多个视图。

真正实现:

一次建模,多处复用。

DataTable与ECharts Dataset对比

很多开发者会联想到:

ECharts Dataset。

两者确实理念相近。

但DataTable更偏向:

Highcharts DataTable

  • 独立数据模型

  • 支持实例对象

  • 支持TypedArray

  • 支持DataGrid生态

  • 与Boost深度集成

ECharts Dataset

  • 配置驱动

  • 偏向图表内部使用

从企业级架构角度看:

DataTable更接近数据层设计。

而不仅仅是图表配置项。

Highcharts观点

DataTable是Highcharts V13最具战略意义的升级之一。

因为它改变的不是图表样式。

而是数据组织方式。

过去:

开发者围绕图表组织数据。

未来:

图表围绕数据工作。

这种转变对于:

  • 数据中台

  • 工业互联网

  • 医药研发平台

  • 金融分析系统

  • 企业BI平台

都具有深远影响。

随着未来Highcharts Grid、Dashboards和DataTable生态持续完善,一个统一的数据模型将成为企业级可视化平台的重要基础设施。


结语

Highcharts V13推出的DataTable不仅让数据组织更加规范,也让图表开发更加接近真实业务场景。

通过DataTable和DataMapping机制,开发者可以直接利用数据库、API和业务表格数据构建图表,而不再需要繁琐的数据转换工作。

对于大型项目而言,这不仅意味着代码减少,更意味着架构更加清晰、性能更优、维护成本更低。

下一篇《Highcharts V13新功能解读》将深入解析Autoload自动模块加载机制,看看Highcharts如何解决开发者最常见的“忘记加载模块”问题,以及为什么它将成为AI生成图表时代的重要能力。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐