news 2026/7/26 22:46:19

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/7/26 13:30:05

22、调试与错误处理全解析

调试与错误处理全解析 1. 断点设置与属性 1.1 打开断点窗口 在调试过程中,设置断点是一项重要的操作。可以通过以下三种方式打开断点窗口: - 按下 Ctrl - Alt - B 。 - 从 Debug ➝ Windows 菜单命令中选择 Breakpoints 。 - 点击调试工具栏的 Windows 图标并选…

作者头像 李华
网站建设 2026/7/26 3:30:12

23、错误处理、调试与网站安全个性化设置

错误处理、调试与网站安全个性化设置 1. 错误处理与调试 在开发过程中,错误处理和调试是确保应用程序稳定运行的关键环节。 1.1 自定义错误页面 为了给用户更好的体验,我们可以自定义错误页面。具体操作如下: - 在 web.config 文件的 <customErrors> 部分添加…

作者头像 李华
网站建设 2026/7/26 6:57:18

29、ASP.NET 购物车与购买流程实现

ASP.NET 购物车与购买流程实现 在构建一个完整的 ASP.NET 购物网站时,购物车、购买页面、确认页面以及自定义错误页面是不可或缺的部分。下面将详细介绍这些页面的实现过程。 1. 购物车页面 购物车页面用于展示用户添加到购物车中的商品信息,并且提供移除商品和进入购买页…

作者头像 李华
网站建设 2026/7/26 8:27:02

PESCMS Ticket:企业级客服工单系统部署与实战指南

PESCMS Ticket&#xff1a;企业级客服工单系统部署与实战指南 【免费下载链接】PESCMS-Ticket PESMCS Ticket (下称PT) 是一款基于 GPLv2 协议发布的开源客服工单系统。 项目地址: https://gitcode.com/gh_mirrors/pe/PESCMS-Ticket &#x1f3af; 让客户服务更智能&…

作者头像 李华
网站建设 2026/7/26 15:06:58

SacreBLEU完全指南:机器翻译质量评估的终极解决方案

SacreBLEU完全指南&#xff1a;机器翻译质量评估的终极解决方案 【免费下载链接】sacrebleu Reference BLEU implementation that auto-downloads test sets and reports a version string to facilitate cross-lab comparisons 项目地址: https://gitcode.com/gh_mirrors/sa…

作者头像 李华
网站建设 2026/7/19 19:53:36

35、数据验证的实用指南与示例

数据验证的实用指南与示例 1. 验证的必要性及常见问题解答 在处理用户输入时,验证是必不可少的环节,因为用户可能会犯错,错误的输入可能导致订单错误、记录不准确,甚至损坏数据库。以下是一些常见问题及解答: | 问题 | 解答 | | — | — | | 为何需要验证? | 用户会…

作者头像 李华