JS绘图Flot如何实现可选显示曲线图功能


Posted in Javascript onOctober 16, 2020

刚刚做了可以动态去刷新的曲线图,下面再来实现一个可以选择显示那个显示值的曲线图。

首先看一下效果:

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=utf-8" />
<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 datasets = {
    "usa": {
      label: "USA",
      data: [[1988, 483994], [1989, 479060], [1990, 457648], [1991, 401949], [1992, 424705], [1993, 402375], [1994, 377867], [1995, 357382], [1996, 337946], [1997, 336185], [1998, 328611], [1999, 329421], [2000, 342172], [2001, 344932], [2002, 387303], [2003, 440813], [2004, 480451], [2005, 504638], [2006, 528692]]
    },    
    "russia": {
      label: "Russia",
      data: [[1988, 218000], [1989, 203000], [1990, 171000], [1992, 42500], [1993, 37600], [1994, 36600], [1995, 21700], [1996, 19200], [1997, 21300], [1998, 13600], [1999, 14000], [2000, 19100], [2001, 21300], [2002, 23600], [2003, 25100], [2004, 26100], [2005, 31100], [2006, 34700]]
    },
    "uk": {
      label: "UK",
      data: [[1988, 62982], [1989, 62027], [1990, 60696], [1991, 62348], [1992, 58560], [1993, 56393], [1994, 54579], [1995, 50818], [1996, 50554], [1997, 48276], [1998, 47691], [1999, 47529], [2000, 47778], [2001, 48760], [2002, 50949], [2003, 57452], [2004, 60234], [2005, 60076], [2006, 59213]]
    },
    "germany": {
      label: "Germany",
      data: [[1988, 55627], [1989, 55475], [1990, 58464], [1991, 55134], [1992, 52436], [1993, 47139], [1994, 43962], [1995, 43238], [1996, 42395], [1997, 40854], [1998, 40993], [1999, 41822], [2000, 41147], [2001, 40474], [2002, 40604], [2003, 40044], [2004, 38816], [2005, 38060], [2006, 36984]]
    },
    "denmark": {
      label: "Denmark",
      data: [[1988, 3813], [1989, 3719], [1990, 3722], [1991, 3789], [1992, 3720], [1993, 3730], [1994, 3636], [1995, 3598], [1996, 3610], [1997, 3655], [1998, 3695], [1999, 3673], [2000, 3553], [2001, 3774], [2002, 3728], [2003, 3618], [2004, 3638], [2005, 3467], [2006, 3770]]
    },
    "sweden": {
      label: "Sweden",
      data: [[1988, 6402], [1989, 6474], [1990, 6605], [1991, 6209], [1992, 6035], [1993, 6020], [1994, 6000], [1995, 6018], [1996, 3958], [1997, 5780], [1998, 5954], [1999, 6178], [2000, 6411], [2001, 5993], [2002, 5833], [2003, 5791], [2004, 5450], [2005, 5521], [2006, 5271]]
    },
    "norway": {
      label: "Norway",
      data: [[1988, 4382], [1989, 4498], [1990, 4535], [1991, 4398], [1992, 4766], [1993, 4441], [1994, 4670], [1995, 4217], [1996, 4275], [1997, 4203], [1998, 4482], [1999, 4506], [2000, 4358], [2001, 4385], [2002, 5269], [2003, 5066], [2004, 5194], [2005, 4887], [2006, 4891]]
    }
  };
	// 对象要显示的颜色,使用JQuery循环,然后为对象增加一个 color 属性
  var i = 0;
  $.each(datasets, function(key, val) {
    val.color = i;
    ++i;
  });  
  // 增加选择可显示国家的多选框
  var choiceContainer = $("#choices");
  $.each(datasets, function(key, val) {
    choiceContainer.append('<br/><input type="checkbox" name="' + key +
                '" checked="checked" id="id' + key + '">' +
                '<label for="id' + key + '">'
                + val.label + '</label>');
  });
	// 为可选框增加点击事件
  choiceContainer.find("input").click(plotAccordingToChoices); 
	// 多选框点击事件,用于移除或增加某个国家的显示
  function plotAccordingToChoices() {
    var data = [];
    choiceContainer.find("input:checked").each(function () {
			// 多选框的名字
      var key = $(this).attr("name");
			// 有该属性,并且有该属性为Key的数据,则增加到显示区
      if (key && datasets[key])
        data.push(datasets[key]);
    });
		// 如果有数据则设置数据。等同与把图形重绘了,所以移除某个国家时可以不再显示
    if (data.length > 0)
      $.plot($("#placeholder"), data, {
        yaxis: { min: 0 },
        xaxis: { tickDecimals: 0 }
      });
  }
	// 调用一次以显示某写国家的值
  plotAccordingToChoices();
});
</script>
</head>
<body>
<div id="placeholder" style="width:600px;height:300px;"></div>
<p id="choices">Show:</p>
</body>
</html>

选择某个多选框的话会显示其曲线。

以上示例来自官方并简单修改和增加了注释,希望对一些人有所帮助。

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

Javascript 相关文章推荐
免费空间广告万能消除代码
Sep 04 Javascript
jQuery简单实现网页选项卡特效
Nov 24 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
Jan 09 Javascript
使用JQuery在线制作ppt并在线演示源码特效
Sep 08 Javascript
js检测iframe是否加载完成的方法
Nov 26 Javascript
分享10个优化代码的CSS和JavaScript工具
May 11 Javascript
利用AJAX实现WordPress中的文章列表及评论的分页功能
May 17 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
May 01 Javascript
Angular 4依赖注入学习教程之简介(一)
Jun 04 Javascript
vue-router实现组件间的跳转(参数传递)
Nov 07 Javascript
利用Javascript开发一个二维周视图日历
Dec 14 Javascript
教你搭建按需加载的Vue组件库(小结)
Jul 29 Javascript
JS跨浏览器解析XML应用过程详解
Oct 16 #Javascript
JS实现简易图片自动轮播
Oct 16 #Javascript
JS绘图Flot如何实现动态可刷新曲线图
Oct 16 #Javascript
基于JQuery和DWR实现异步数据传递
Oct 16 #jQuery
JS绘图Flot应用图形绘制异常解决方案
Oct 16 #Javascript
swiper4实现移动端导航栏tab滑动切换
Oct 16 #Javascript
JS highcharts动态柱状图原理及实现
Oct 16 #Javascript
You might like
操作Oracle的php类
2006/10/09 PHP
在smarty模板中使用PHP函数的方法
2011/04/23 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
PHP随机生成唯一HASH值自定义函数
2015/04/20 PHP
使用Thinkphp框架开发移动端接口
2015/08/05 PHP
php通过header发送自定义数据方法
2018/01/18 PHP
fix-ie5.js扩展在IE5下不能使用的几个方法
2007/08/20 Javascript
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
angularjs创建弹出框实现拖动效果
2020/08/25 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
Vue.js仿Metronic高级表格(二)数据渲染
2017/04/19 Javascript
vue.js移动端app实战1:初始配置详解
2017/07/24 Javascript
angularJs中ng-model-options设置数据同步的方法
2018/09/30 Javascript
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
layer ui 导入文件之前传入数据的实例
2019/09/23 Javascript
JavaScript中this的学习笔记及用法整理
2020/02/17 Javascript
JS co 函数库的含义和用法实例总结
2020/04/08 Javascript
微信小程序图片右边加两行文字的代码
2020/04/23 Javascript
javascript实现前端成语点击验证
2020/06/24 Javascript
在Python下尝试多线程编程
2015/04/28 Python
django通过ajax发起请求返回JSON格式数据的方法
2015/06/04 Python
Python的Tornado框架实现图片上传及图片大小修改功能
2016/06/30 Python
一文总结学习Python的14张思维导图
2017/10/17 Python
Python实现的远程登录windows系统功能示例
2018/06/21 Python
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
美国奢侈品购物平台:Orchard Mile
2018/05/02 全球购物
美国室内和室外装饰花盆购物网站:ePlanters
2019/03/22 全球购物
竞聘演讲稿精彩开头和结尾
2014/05/14 职场文书
2014年计生标语
2014/06/23 职场文书
2014教师个人自我评价范文
2014/09/13 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
科技活动总结范文
2015/05/11 职场文书
python前后端自定义分页器
2022/04/13 Python