JS绘图Flot如何实现动态可刷新曲线图


Posted in Javascript onOctober 16, 2020

刚刚做的是一个静态的曲线图,只要设置数据,就可以直接显示。下面来做一个根据时间间隔根据新数据一直变的曲线绘图示例。

同样,为了兼容不同浏览器,请一定要引入三个JS文件,否则不保证在IE下的运行。

首先来看一下效果!

JS绘图Flot如何实现动态可刷新曲线图

刷新间隔的实现其实就是定时调用某个函数,这个函数将绘图对象里面的数据更新即可。

我们来看一下代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>Flot动态曲线</title> 
<!--[if lte IE 8]><script language="javascript" type="text/javascript" src="excanvas.min.js"></script><![endif]--> 
<script language="javascript" type="text/javascript" src="jquery.js"></script> 
<script language="javascript" type="text/javascript" src="jquery.flot.js"></script> 
<script type="text/javascript"> 
$(function () { 
  // 要绘制的数据和数据的数据点数 
  var data = [], totalPoints = 300; 
  // 获得一些随机数据 
  function getRandomData() { 
    if (data.length > 0) 
      datadata = data.slice(1); 
    while (data.length < totalPoints) { 
      var prev = data.length > 0 ? data[data.length - 1] : 50; 
      var y = prev + Math.random() * 10 - 5; 
      if (y < 0) 
        y = 0; 
      if (y > 100) 
        y = 100; 
      data.push(y); 
    } 
    var res = []; 
    for (var i = 0; i < data.length; ++i) 
      res.push([i, data[i]]) 
    return res; 
  } 
  var updateInterval = 30; // 刷新间隔 
  // 更改刷新间隔时间 
  $("#updateInterval").val(updateInterval).change(function () { 
    var v = $(this).val(); 
    if (v && !isNaN(+v)) { 
      updateInterval = +v; 
      if (updateInterval < 1) 
        updateInterval = 1; 
      if (updateInterval > 2000) 
        updateInterval = 2000; 
      $(this).val("" + updateInterval); 
    } 
  }); 
  // 设置绘图参数 
  var options = { 
    series: { shadowSize: 0 }, // 绘制线的阴影,不绘制设置 0 
    yaxis: { min: 0, max: 100 }, // Y 轴的最大值最小值 
    xaxis: { show: false } // 不显示 X 轴 
  }; 
  // 绘图对象 参数为:绘制地点、数据、属性 
  var plot = $.plot($("#placeholder"), [ getRandomData() ], options); 
  function update() { 
    // 要实现动态绘图,只需重新设置其数据即可 
    plot.setData([ getRandomData() ]); // 设置数据 
    // 轴线不改变,不用调用 plot.setupGrid() 
    plot.draw(); 
    // 设置调用 
    setTimeout(update, updateInterval); 
  } 
  // 加载调用 
  update(); 
}); 
</script> 
</head> 
<body> 
<div id="placeholder" style="width:600px;height:300px;"></div> 
<br><br> 
刷新时间间隔:<input id="updateInterval" type="text" value="" style="text-align: right; width:5em"> 
</body> 
</html>

输入不同的刷新间隔,绘图的速度会响应的调整。以上示例来自官方,少做修改并加以注释,希望对一些人有所帮助。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
非常不错的功能强大代码简单的管理菜单美化版
Jul 09 Javascript
JavaScript控制Session操作方法
Jan 17 Javascript
javascript设计模式之工厂模式示例讲解
Mar 04 Javascript
jQuery垂直多级导航菜单代码分享
Aug 18 Javascript
jQuery链式操作实例分析
Nov 16 Javascript
JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome
Jan 05 Javascript
vue-resource + json-server模拟数据的方法
Nov 02 Javascript
微信小程序实现简单input正则表达式验证功能示例
Nov 30 Javascript
vue-cli3搭建项目的详细步骤
Dec 05 Javascript
webpack中的模式(mode)使用详解
Feb 20 Javascript
vue实现下拉菜单树
Oct 22 Javascript
JS实现多功能计算器
Oct 28 Javascript
基于JQuery和DWR实现异步数据传递
Oct 16 #jQuery
JS绘图Flot应用图形绘制异常解决方案
Oct 16 #Javascript
swiper4实现移动端导航栏tab滑动切换
Oct 16 #Javascript
JS highcharts动态柱状图原理及实现
Oct 16 #Javascript
如何手动实现一个 JavaScript 模块执行器
Oct 16 #Javascript
JS highcharts实现动态曲线代码示例
Oct 16 #Javascript
Swiper实现导航栏滚动效果
Oct 16 #Javascript
You might like
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
JavaScript 事件属性绑定带参数的函数
2009/03/13 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
THREE.JS入门教程(5)你应当知道的十件事
2013/01/24 Javascript
js中AppendChild与insertBefore的用法详细解析
2013/12/16 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
鼠标左键单击冲突的问题解决方法(防止冒泡)
2014/05/14 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
2016/12/20 Javascript
js仿新浪微博消息发布功能
2017/02/17 Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
2017/09/20 Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
2018/01/02 jQuery
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
Vue的自定义组件不能使用click方法的解决
2020/07/28 Javascript
[04:00]黄浦江畔,再会英雄——完美世界DOTA2 TI9应援视频
2019/07/31 DOTA
Python中一些自然语言工具的使用的入门教程
2015/04/13 Python
Python使用matplotlib绘制动画的方法
2015/05/20 Python
Python实现对一个函数应用多个装饰器的方法示例
2018/02/09 Python
解决Tensorflow安装成功,但在导入时报错的问题
2018/06/13 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
对python GUI实现完美进度条的示例详解
2018/12/13 Python
python将四元数变换为旋转矩阵的实例
2019/12/04 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
Django多数据库配置及逆向生成model教程
2020/03/28 Python
python可迭代对象去重实例
2020/05/15 Python
python实现人像动漫化的示例代码
2020/05/17 Python
scrapy-splash简单使用详解
2021/02/21 Python
中国跨境海淘网站:考拉海购
2016/08/01 全球购物
Weblogc domain问题
2014/01/27 面试题
校园安全演讲稿
2014/05/09 职场文书
转让协议书范本
2014/09/13 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
四则混合运算教学反思
2016/02/23 职场文书
创业计划书详解
2019/07/19 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
python 离散点图画法的实现
2022/04/01 Python