jquery flotcharts使用简介

flotcharts是一个基于jquery的,使用Canvas画HTML图表的js库。

它的使用很简单,一般情况下只要下载它的zip包,然后看它的那几个例子就知道该怎么做了,更高级一点的,可以参考一下它的文档。在我们项目的使用中,主要花了一点功夫的地方是如何让它能正确地处理和显示时间数据。

一般来说,flotcharts的使用是这样的。首先,要在页面上加上对IE 8以下Canvas的支持,然后,再加上jquery与jquery.plot的js,就像这样:

<!--[if lte IE 8]><script src="../js/excanvas.min.js"></script><![endif]-->
<script src="../js/jquery.js"></script>
<script src="../js/jquery.flot.js"></script>

接着,就是在页面上加上对应的代码,读取数据画图:

function draw_plot(data) {
  var d = [];
  for(var i=0; i<data.length; i++)
    d.push([i, data[i]]);

  $.plot($(‘#placeholder‘),
    [{data: d, label: ‘测试数据‘}],
    {
      series: {lines: {show: true}}
    }
  );
}

当然,上面代码中的data是一个数组,其中每个元素都是数字类型。下面是对应的图表。

在大部分时候,我们还需要悬浮特效,也就是要在用户把鼠标移到数据点上的时候飘出一个小浮层来,用来显示当前用户鼠标下方数据点的具体数据,这个时候,我们需要在调用plot的时候传入相应的参数,而且处理对应的鼠标悬浮事件,如下所示(鼠标悬浮的代码都是从flotcharts样例中的interacting.html页面代码里复制的):

function show_tooltip(x, y, contents) {
  $(‘<div id="tooltip">‘ + contents + ‘</div>‘).css( {
    position: ‘absolute‘,
    display: ‘none‘,
    top: y + 5,
    left: x + 5,
    border: ‘1px solid #fdd‘,
    padding: ‘2px‘,
    ‘background-color‘: ‘#fee‘,
    opacity: 0.80
  }).appendTo("body").fadeIn(200);
}

function draw_plot(data) {
  var d = [];
  for(var i=0; i<data.length; i++)
    d.push([i, data[i]]);

  $.plot($(‘#placeholder‘),
    [{data: d, label: ‘测试数据‘}],
    {
      series: {
        lines: {show: true},
        points: {show: true}
      },
      grid: { hoverable: true }
    }
  );

  var previousPoint = null;
  $("#placeholder").bind("plothover", function (event, pos, item) {
    if (item) {
      if (previousPoint != item.dataIndex) {
        previousPoint = item.dataIndex;

        $("#tooltip").remove();
        var x = item.datapoint[0], y = item.datapoint[1];

        show_tooltip(item.pageX, item.pageY,
          item.series.label + "[" + x + "] : " + y);
      }
    }
    else {
      $("#tooltip").remove();
      previousPoint = null;
    }
  });
}

经过这些处理以后得到的图是这样的:

最后就是要让flotcharts能正确显示时间了,主要是需要在横轴上做一些处理。在flotcharts的plot的 第三个参数支持使用mode参数,将其设置为time即可显示出日期/时间来,但是这个显示出来的时间是英文的,例如Nov 12之类的,对我们来说就不那么方便了。其实,由于flotcharts只是将横轴数据当做数字来处理,而且又提供了格式化显示横轴数据的接口,因此,我 们完全可以传入一个Date对象的getTime()值,然后再使用自定义横轴数据显示接口,将其转化为我们希望的格式。如下例所示:

function show_tooltip(x, y, contents) {
  $(‘<div id="tooltip">‘ + contents + ‘</div>‘).css( {
    position: ‘absolute‘,
    display: ‘none‘,
    top: y + 5,
    left: x + 5,
    border: ‘1px solid #fdd‘,
    padding: ‘2px‘,
    ‘background-color‘: ‘#fee‘,
    opacity: 0.80
  }).appendTo("body").fadeIn(200);
}

function draw_plot(data) {
  var start_time = new Date().getTime() - 1000*3600*24*data.length;
  var d = [];
  for(var i=0; i<data.length; i++)
    d.push([start_time + i*1000*3600*24, data[i]]);

  $.plot($(‘#placeholder‘),
    [{data: d, label: ‘测试数据‘}],
    {
      series: {
        lines: {show: true},
        points: {show: true}
      },
      grid: { hoverable: true },
      xaxis: { tickFormatter: function(n, o) {var d = new Date(); d.setTime(n); return (d.getMonth()+1) + "-" + d.getDate();}}
    }
  );

  var previousPoint = null;
  $("#placeholder").bind("plothover", function (event, pos, item) {
    if (item) {
      if (previousPoint != item.dataIndex) {
        previousPoint = item.dataIndex;

        $("#tooltip").remove();
        var x = new Date(), y = item.datapoint[1];
        x.setTime(item.datapoint[0]);
        show_tooltip(item.pageX, item.pageY,
          item.series.label + "[" + x.getFullYear() + "-" + (x.getMonth()+1) + "-" + x.getDate() + "] : " + y);
      }
    }
    else {
      $("#tooltip").remove();
      previousPoint = null;
    }
  });
}

这次做完以后,可以得到显示日期的图表了。如下图所示:

其他的效果都可以参见flotcharts的文档和例子了,这里就不说了。

2015.1.16附注:

上面代码对时间数据的处理过于简单,x轴数据过大貌似会造成flotcharts在后面数据点的横坐标偏差较大,更好的方法参见这篇文章

时间: 2024-10-05 23:57:09

jquery flotcharts使用简介的相关文章

jquery.flot.js简介

JQuery图表插件之Flot Flot是一个Jquery下图表插件,具有简单使用,交互效果,具有吸引力外观特点.目前支持 Internet Explorer 6+, Chrome, Firefox 2+, Safari 3+ and Opera 9.5+ 等浏览器,是一个基于Javascript和Jquery纯客端户的脚本库,下面看一个简单的示例,先插入js: <script language="javascript" type="text/javascript&qu

jquery.easypiechart.js简介

此插件主要是用来统计新的访问.跳出率.服务器负载.使用的RAM等,功能很强大,带有HTML5的动画效果,效果非常炫,看效果吧easyPieChart一款新型的EASY饼图数据统计Jquery插件截图: 插件下载:https://github.com/rendro/easy-pie-chart/ jquery.easypiechart.js简介,布布扣,bubuko.com

jquery.sparkline.js简介

jQuery线状图插件Sparkline 官网地址:http://omnipotent.net/jquery.sparkline/ 文档地址:http://omnipotent.net/jquery.sparkline/#docs 下载地址:http://omnipotent.net/jquery.sparkline/#download jquery.sparkline.js简介,布布扣,bubuko.com

jquery.gritter.js简介

Gritter 是一个小型的 jQuery 消息通知插件,通知效果如下图所示: 参考网 jquery.gritter.js简介,布布扣,bubuko.com

jquery.peity.js简介

jQuery简单图表peity.js [javascript] <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>无标题页</title> <script type="text/javascript" src="jQuery.js"></script> <script type="text/ja

jQuery Mobile_公司简介

<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-width=1.0,maximum-width=1.0,user-scalable=no"/> <title>无标题文档</title> <

JQuery 鼠标事件简介

mouseover事件于用户把鼠标从一个元素移动到另外一个元素上时触发,mouseout事件于用户把鼠标移出一个元素时触发. 下面为你详细介绍下jquery中的鼠标事件: (1):click事件:click事件于用户在元素敲击鼠标左键,并在相同元素上松开左键时触发: $('p').click(function(){ alert('click function is running !'); }); (2):dblclick:dbclick事件在用户完成迅速连续的两次点击之后触发,双击的速度取决于

很容易学习的JQuery库 : (一) 简介

jQuery 是一个 JavaScript 库: jQuery 极大地简化了 JavaScript 编程: jQuery 很容易学习. 上面的三句话是结合最近的学习整理后的心得,个人感觉可以很好地解释JQuery. 一.是什么      jQuery,顾名思义,也就是JavaScript和查询(Query),即是辅助JavaScript开发的库. jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多). jQuery使用户能更

第九章 jQuery验证插件简介

1. 表单验证插件-----Validation <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content=&qu