news 2026/6/15 19:38:39

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/15 15:24:26

揭秘Elsa 3.0:.NET工作流自动化的革命性突破

揭秘Elsa 3.0&#xff1a;.NET工作流自动化的革命性突破 【免费下载链接】elsa-core A .NET workflows library 项目地址: https://gitcode.com/gh_mirrors/el/elsa-core 在当今快节奏的数字时代&#xff0c;工作流自动化已成为提升企业效率的关键技术。Elsa 3.0作为一款…

作者头像 李华
网站建设 2026/6/15 13:31:08

36、网页开发中的样式、状态与调试技巧

网页开发中的样式、状态与调试技巧 在网页开发过程中,样式表、母版页、导航、状态管理以及错误调试都是至关重要的环节。以下将详细介绍相关的知识与操作技巧。 1. 样式表与母版页相关知识 1.1 样式表应用 最佳方式 :在页面上应用样式的最佳方式是使用外部样式表。虽然也…

作者头像 李华
网站建设 2026/6/15 13:30:31

28、活动目录复制故障排查与维护监控指南

活动目录复制故障排查与维护监控指南 1. 复制问题概述 在活动目录(Active Directory)环境中,复制配置错误可能会导致复制无法正常工作,进而影响用户体验。这些错误可能由多种因素引起,如密码更改、账户修改、组成员变更,甚至是组策略对象(GPO)复制不正确。 1.1 调查…

作者头像 李华
网站建设 2026/6/15 16:48:55

3分钟掌握Blender到Unity的无缝FBX导出技巧

3分钟掌握Blender到Unity的无缝FBX导出技巧 【免费下载链接】blender-to-unity-fbx-exporter FBX exporter addon for Blender compatible with Unitys coordinate and scaling system. 项目地址: https://gitcode.com/gh_mirrors/bl/blender-to-unity-fbx-exporter 对于…

作者头像 李华
网站建设 2026/6/15 15:47:48

33、Active Directory搜索全攻略

Active Directory搜索全攻略 1. Active Directory搜索基础 在Active Directory中进行搜索时,有几种常见的搜索依据,以下为你详细介绍: 1.1 账户名(Account name) 账户名是常用的搜索依据,它通常是登录ID或 samAccountName 。例如,使用 Get-ADUser -Identity dgre…

作者头像 李华
网站建设 2026/6/15 15:51:36

34、活动目录搜索、迁移与升级全攻略

活动目录搜索、迁移与升级全攻略 1. 活动目录搜索 在活动目录(Active Directory)中,搜索是一项常见且重要的操作。搜索不同类型的对象,如用户、组和计算机,有不同的方法和过滤器。 1.1 搜索组 通常,搜索组主要是通过名称进行的。以下是一些常用的搜索过滤器: | 搜索…

作者头像 李华