news 2026/4/22 2:18:56

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/4/20 18:49:56

5大实用技巧让Android电视直播体验全面升级

5大实用技巧让Android电视直播体验全面升级 【免费下载链接】mytv-android 使用Android原生开发的电视直播软件&#xff08;source backup&#xff09; 项目地址: https://gitcode.com/gh_mirrors/myt/mytv-android 还在为电视直播卡顿、频道单一而烦恼吗&#xff1f;my…

作者头像 李华
网站建设 2026/4/17 22:18:33

32、云端活动目录与 Windows Azure 活动目录管理全解析

云端活动目录与 Windows Azure 活动目录管理全解析 1. 云端活动目录概述 在云端部署活动目录(Active Directory)时,除了基础设施的位置可能有所不同,整体环境基本保持不变。这就如同将所有域控制器集中放置在一个数据中心一样。企业只需确保供应商与用户之间有足够的带宽…

作者头像 李华
网站建设 2026/4/20 11:50:10

81、非交换迭代构造与无圈构造中的运算

非交换迭代构造与无圈构造中的运算 在代数结构的研究中,非交换迭代构造和无圈构造中的运算有着重要地位,它们涉及到上同调、同构、悬置和转幂等多个概念,下面我们将详细探讨这些内容。 1. 上同调的同构与乘法结构 设 $\mathfrak{C}$ 是一个非交换迭代特殊构造,初始代数为…

作者头像 李华
网站建设 2026/4/19 21:20:45

82、幂零代数中的幂次除法运算解读

幂零代数中的幂次除法运算解读 在数学的代数领域中,幂次除法运算及其相关性质是一个重要的研究方向。本文将深入探讨幂次除法运算在不同代数结构中的特性、应用以及相关定理的证明。 1. 基础概念与初始设定 在一个系数环上,考虑最终代数 (N = E(l) \otimes P(2)),其中微分…

作者头像 李华
网站建设 2026/4/18 6:08:03

Synology视频信息插件完整配置教程:轻松实现智能媒体库管理

Synology视频信息插件是一款专为群晖NAS用户设计的第三方扩展工具&#xff0c;能够从多个知名影视数据库平台自动获取视频元数据信息。这个插件使用纯Python标准库实现&#xff0c;无需安装任何第三方依赖&#xff0c;具有高度的灵活性和可扩展性&#xff0c;让您的群晖媒体库管…

作者头像 李华