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 相关文章推荐
用jscript启动sqlserver
Jun 21 Javascript
JavaScript中的闭包原理分析
Mar 08 Javascript
Javascript面向对象扩展库代码分享
Mar 27 Javascript
jQuery前端框架easyui使用Dialog时bug处理
Dec 05 Javascript
jquery+Jscex打造游戏力度条
Sep 12 Javascript
vue中,在本地缓存中读写数据的方法
Sep 21 Javascript
详解微信小程序开发之formId使用(模板消息)
Aug 27 Javascript
手把手带你搭建一个node cli的方法示例
Aug 07 Javascript
jQuery编写QQ简易聊天框
Aug 27 jQuery
vue中是怎样监听数组变化的
Oct 24 Javascript
详解vue修改elementUI的分页组件视图没更新问题
Nov 13 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
Jan 07 Vue.js
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
php更新修改excel中的内容实例代码
2014/02/26 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
2019/03/30 PHP
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
jquery教程限制文本框只能输入数字和小数点示例分享
2014/01/13 Javascript
浅析Node.js查找字符串功能
2014/09/03 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
2015/07/17 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
BootStrap组件之进度条的基本用法
2017/01/19 Javascript
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
2017/05/24 Javascript
JS判断用户用的哪个浏览器实例详解
2018/10/09 Javascript
详解webpack4.x之搭建前端开发环境
2019/03/28 Javascript
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
[01:03:03]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
一些Python中的二维数组的操作方法
2015/05/02 Python
使用Python编写简单的画图板程序的示例教程
2015/12/08 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
Python列表操作方法详解
2020/02/09 Python
python+selenium 脚本实现每天自动登记的思路详解
2020/03/11 Python
使用Python画了一棵圣诞树的实例代码
2020/11/27 Python
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
JD Sports瑞典:英国领先的运动时尚商店
2018/01/28 全球购物
什么是重载?CTS、CLS和CLR分别做何解释
2012/05/06 面试题
思想政治教育专业个人求职信范文
2013/12/20 职场文书
本科毕业生专业自荐书范文
2014/02/05 职场文书
销售员求职个人的自我评价
2014/02/19 职场文书
党组织公开承诺书
2014/03/29 职场文书
小学五年级学生评语
2014/04/22 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
自荐信格式范文
2015/03/04 职场文书
python 管理系统实现mysql交互的示例代码
2021/12/06 Python
十大最强电系宝可梦,阿尔宙斯电系之一,第七被称为雷神
2022/03/18 日漫
进阶篇之linux环境下安装MySQL数据库
2022/04/09 MySQL
Python经常使用的一些内置函数
2022/04/11 Python