news 2026/6/9 17:18:44

Highcharts 动态图

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Highcharts 动态图

Highcharts 动态图(实时更新图表)详解

Highcharts 的动态图(也称为实时图表)是其最受欢迎的功能之一,能够在页面不刷新的情况下,通过 JavaScript 动态添加、修改或删除数据点,并带有平滑动画效果。非常适合:

  • 实时监控系统(CPU、内存、温度、流量等)
  • 股票/加密货币价格走势
  • IoT 传感器数据展示
  • 网站访问统计
  • 任何需要持续更新数据的场景
核心动态更新方法
方法用途示例代码
series.addPoint(point, redraw?, shift?, animation?)添加单个新数据点series.addPoint([x, y], true, true, true)
series.setData(data, redraw?)替换整个系列数据series.setData(新数组)
point.update(value, redraw?)更新单个现有数据点points[0].update(新值)
chart.addSeries(options)添加新系列chart.addSeries({name: '新系列', data: [...]})
series.remove(redraw?)删除系列chart.series[0].remove()
chart.update(options)批量修改图表配置(如切换类型)chart.update({chart: {type: 'column'}})
1. 经典实时折线图示例(每秒更新,自动滚动)
<!DOCTYPEhtml><htmllang="zh"><head><metacharset="UTF-8"><title>Highcharts 实时动态图示例</title><scriptsrc="https://code.highcharts.com/highcharts.js"></script></head><body><divid="container"style="width:900px;height:500px;margin:50px auto;"></div><script>Highcharts.chart('container',{chart:{type:'spline',// 推荐 spline 或 areaspline,曲线更平滑animation:Highcharts.svg,marginRight:10,events:{load:function(){constseries=this.series[0];setInterval(function(){constx=(newDate()).getTime();// 当前时间戳consty=Math.random()*80+20;// 模拟随机数据series.addPoint([x,y],true,true,true);// 参数说明:// [x, y] : 新数据点// true : 立即重绘// true : shift - 超出显示范围时自动删除最旧点// true : 开启动画},1000);// 每秒更新一次}}},time:{useUTC:false},// 使用本地时间title:{text:'实时数据监控仪表盘'},subtitle:{text:'每秒自动更新'},xAxis:{type:'datetime',tickPixelInterval:150,labels:{format:'{value:%H:%M:%S}'}},yAxis:{title:{text:'数值'},min:0,max:120,plotLines:[{value:80,color:'#ff0000',width:2,dashStyle:'Dash',label:{text:'警戒线'}}]},tooltip:{formatter:function(){return'<b>'+Highcharts.dateFormat('%Y-%m-%d %H:%M:%S',this.x)+'</b><br/>'+'数值: <b>'+this.y.toFixed(2)+'</b>';}},legend:{enabled:false},exporting:{enabled:false},series:[{name:'实时数据',color:'#7cb5ec',data:(function(){// 初始化显示最近 30 个点constdata=[];consttime=(newDate()).getTime();for(leti=-29;i<=0;i+=1){data.push({x:time+i*1000,y:Math.random()*80+20});}returndata;}())}]});</script></body></html>
2. 多系列实时更新(常见监控场景)
load:function(){constchart=this;setInterval(function(){constx=(newDate()).getTime();chart.series[0].addPoint([x,Math.random()*100],true,true);chart.series[1].addPoint([x,Math.random()*60+20],true,true);chart.series[2].addPoint([x,Math.random()*40+40],true,true);},1500);}
3. 从后端接口获取真实数据(Ajax 示例)
setInterval(function(){fetch('/api/sensor-data')// 替换为你的真实接口.then(response=>response.json()).then(data=>{constx=(newDate()).getTime();chart.series[0].addPoint([x,data.temperature],true,true);chart.series[1].addPoint([x,data.humidity],true,true);});},5000);// 每5秒请求一次
4. 其他实用技巧
  • 动态切换图表类型(按钮切换折线 ↔ 柱状):

    document.getElementById('switchBtn').addEventListener('click',function(){constnewType=chart.options.chart.type==='spline'?'column':'spline';chart.update({chart:{type:newType}});});
  • 性能优化建议(大数据量时):

    • 引入 Boost 模块支持百万级点:
      <scriptsrc="https://code.highcharts.com/modules/boost.js"></script>
    • 使用shift: true限制显示点数
    • 关闭动画:animation: false
5. 推荐实时图表类型
  • spline/areaspline:最常用,视觉平滑
  • line:简单高效
  • column:柱子生长动画很酷
  • scatter/bubble:适合轨迹追踪
  • gauge(仪表盘):需额外模块

Highcharts 的动态更新性能极佳,几乎所有图表类型都支持实时动画,是构建专业仪表盘的首选。

如果你有具体需求,比如:

  • 多条曲线实时监控
  • WebSocket 实时推送
  • 股票K线实时图(Highcharts Stock)
  • 在 Vue/React 中封装动态组件

告诉我你的应用场景,我可以提供完整可运行的代码示例!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 11:59:07

GPT-SoVITS模型灰度监控看板设计:实时掌握运行状态

GPT-SoVITS模型灰度监控看板设计&#xff1a;实时掌握运行状态 在AI语音技术快速渗透内容创作、智能交互和无障碍服务的今天&#xff0c;个性化语音合成已不再是实验室里的“黑科技”&#xff0c;而是支撑虚拟主播、有声读物、客服机器人等业务的核心能力。然而&#xff0c;当一…

作者头像 李华
网站建设 2026/6/10 12:00:14

16、活动目录域控制器管理:全局编录与 FSMO 角色详解

活动目录域控制器管理:全局编录与 FSMO 角色详解 1. 全局编录概述 在多域森林环境中,域控制器只能对其所在域的用户进行身份验证,且单个域控制器无法托管多个域。为了让所有域中的域控制器都能获取森林中每个对象的部分信息,引入了全局编录的概念。全局编录包含森林中每个…

作者头像 李华
网站建设 2026/6/10 1:19:16

19、活动目录默认组的安全配置与使用指南

活动目录默认组的安全配置与使用指南 1. Builtin 容器中的默认组 在活动目录(Active Directory)环境中,Builtin 容器中的组类似于服务器或工作站上的本地组。当服务器升级为域控制器时,本地组将不可用,取而代之的是 Builtin 容器中的组。 可以通过以下两种方式查看 Bui…

作者头像 李华
网站建设 2026/6/10 12:01:27

ChatALL多AI对话终极指南:一键并发提问获取最佳答案

ChatALL多AI对话终极指南&#xff1a;一键并发提问获取最佳答案 【免费下载链接】ChatALL Concurrently chat with ChatGPT, Bing Chat, Bard, Alpaca, Vicuna, Claude, ChatGLM, MOSS, 讯飞星火, 文心一言 and more, discover the best answers 项目地址: https://gitcode.…

作者头像 李华
网站建设 2026/6/10 11:59:08

35、Active Directory 升级全攻略

Active Directory 升级全攻略 在对生产环境中的 Active Directory(AD)进行升级之前,强烈建议在实验室环境中进行多次测试升级。AD 升级主要包含以下几个高级步骤: 1. 升级 AD 架构 2. 升级第一个域控制器 3. 升级后续的域控制器 4. 停用旧的域控制器 5. 提升林和域的…

作者头像 李华
网站建设 2026/6/10 12:01:36

Dify企业级实战深度解析 (22)

一、学习目标作为系列课程高级物联网&#xff08;IoT&#xff09;专项补充篇&#xff0c;本集聚焦 “AIIoT 设备联动” 的企业级落地需求&#xff0c;核心目标是掌握DifyDeepseekIoT 平台的深度集成、设备数据采集与解析、AI 异常预警与自动化控制&#xff1a;解决工业生产监控…

作者头像 李华