Apache ECharts 能源监控实战:如何用桑基图实现能源消耗可视化
Apache ECharts 是一个功能强大的交互式图表和数据可视化库,特别适合在浏览器中展示复杂数据关系。本文将聚焦能源监控场景,通过实战案例讲解如何使用 ECharts 的桑基图(Sankey)实现能源消耗的可视化分析,帮助新手快速掌握这一实用技能。
为什么选择桑基图进行能源可视化?
桑基图(Sankey Diagram)是一种特殊的流程图,通过有向箭头的宽度变化直观展示流量(如能源、资金、数据)的分配和流转关系。在能源监控中,它能清晰呈现:
- 不同能源类型(电力、燃气、可再生能源)的转换效率
- 能源从生产到消费的全链条损耗
- 各部门/设备的能源消耗占比
ECharts 的桑基图实现位于 src/chart/sankey/ 目录,核心包括布局算法(sankeyLayout.ts)和视觉渲染(sankeyVisual.ts)模块,为复杂能源数据提供了高效的可视化解决方案。
能源监控桑基图实战步骤
1. 准备能源数据
能源监控场景需要两类核心数据:节点(nodes)和链路(links)。节点代表能源系统中的实体(如发电站、转换设备、用户),链路表示能源流动关系及流量值。ECharts 测试用例中的 test/sankey-vertical-energy.html 提供了完整的能源数据示例,其结构如下:
// 简化的数据结构示例
{
"nodes": [
{"name": "燃煤发电", "itemStyle": {"normal": {"color": "#ff4500"}}},
{"name": "工业用电", "itemStyle": {"normal": {"color": "#4169e1"}}}
],
"links": [
{"source": "燃煤发电", "target": "工业用电", "value": 1250}
]
}
2. 基础配置实现
通过以下代码可快速创建垂直布局的能源桑基图(完整示例见 test/sankey-vertical-energy.html):
chart.setOption({
tooltip: {
trigger: 'item', // 鼠标悬停显示详细数据
triggerOn: 'mousemove'
},
series: [
{
type: 'sankey', // 指定图表类型为桑基图
orient: 'vertical', // 垂直布局(适合展示能源层级关系)
focusNodeAdjacency: 'inEdges', // 高亮关联节点
label: {
position: 'bottom', // 标签位置
rotate: -90 // 垂直文本旋转
},
lineStyle: {
normal: {
color: 'source', // 链路颜色继承自源节点
curveness: 0.5 // 曲线弧度
}
},
data: energyData.nodes, // 能源节点数据
links: energyData.links // 能源流转数据
}
]
});
3. 高级功能应用
ECharts 桑基图提供丰富的交互和样式定制能力,适合能源监控的特殊需求:
(1)能源流向高亮
通过 focusNodeAdjacency 属性实现鼠标悬停时自动高亮相关能源链路,帮助快速定位异常损耗点。在 test/sankey-emphasis-lineStyle.html 中展示了如何通过线样式强调关键能源路径:
lineStyle: {
emphasis: {
width: 10, // 高亮时链路宽度
color: '#ff0000' // 异常能源流标记为红色
}
}
(2)多维度能源对比
利用桑基图的层级结构,可以同时展示多种能源类型的转换关系。例如在 test/sankey.html 中通过多个 series 配置实现传统能源与可再生能源的并行可视化。
(3)动态数据更新
能源监控需要实时响应数据变化,ECharts 提供的 setOption 方法支持增量更新,示例代码:
// 模拟实时能源数据更新
setInterval(() => {
chart.setOption({
series: [{
links: updateEnergyFlowData() // 动态更新能源流量
}]
});
}, 5000);
实战案例:垂直能源桑基图
test/sankey-vertical-energy.html 是一个完整的能源监控案例,它使用垂直布局展示能源从生产到消费的完整链条。该案例的核心特性包括:
- 节点颜色编码:不同能源类型使用差异化颜色(如红色表示化石能源,蓝色表示电力)
- 定向流动展示:通过垂直方向清晰呈现能源从上游到下游的转换过程
- 响应式设计:支持窗口大小变化时自动调整布局
以下是该案例的关键配置片段:
{
type: 'sankey',
orient: 'vertical', // 垂直布局适合能源层级展示
bottom: '18%', left: '10%', // 边距调整
focusNodeAdjacency: 'inEdges', // 聚焦流入链路
label: {
position: 'bottom',
rotate: -90, // 垂直文本优化显示
verticalAlign: 'middle'
},
lineStyle: {
normal: {
curveness: 0.5 // 平滑曲线提升可读性
}
}
}
总结与扩展
通过 ECharts 桑基图实现能源监控可视化,不仅能直观展示能源流动关系,还能通过交互功能帮助运维人员快速定位问题。实际应用中可结合以下功能进一步扩展:
要开始使用 ECharts 进行能源监控开发,可通过以下命令克隆项目:
git clone https://gitcode.com/gh_mirrors/echarts16/echarts
探索 test/ 目录下的桑基图示例,能帮助你快速掌握各类配置技巧,构建符合自身需求的能源可视化系统。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



