jQuery可视化数据显示

http://www.oschina.net/project/tag/275/jquery-chart

1.flot插件

Ole Laursen基于jquery开发的一个图表绘制(WEB Chart)插件,官网http://code.google.com/p/flot/ 可以下载最新版本的插件。

<canvas>是一个新的HTML标签,这个标签可以被Script语言(通常是JavaScript)用来绘制图形。flot插件中就是使用该标签绘制图形的,但在IE浏览器中并不支持该元素,因此如果要在IE浏览器中使用flot绘制图形需要使用一个名为ExCanvas的js库来在IE浏览器中模拟<canvas>标签的图形绘制操作,在flot官网下载的文件中会包含该ExCanvas.js。

flot.htm

<script src="js/jquery.js" type="text/javascript"></script>

<script src="js/jquery.flot.js" type="text/javascript"></script>

<!--[if IE]><script type="text/javascript" src="js/excanvas.js"></script><![endif]-->   IE浏览器下该代码才生效

<script type="text/javascript">

$(document).ready(function(){

$.ajax({type:"GET",url:"Handler1.ashx",success:function(data,status){

var flot=eval('('+data+')').json

$.plot($("#flot"),flot);   $.plot()是flot的核心函数

},dataType:"JSON"});

})

</script>

<div id="flot" style="height:300px; width:300px;">  需要设置目标元素的高和宽,否则不会有任何效果

</div>

函数原型 $.plot(placeholder,flotdata,options)

placeholder是用来展示图形的元素,可以是jQuery对象或DOM元素,最好是div

flotdata是一个json对象组成的数组,每个json对象的格式也有规定,如下:

{label:"说明",data:[[x,y],[x,y],[x,y],[x,y]],color:color or number......} 具体可参考xuqing3344520的博客

可以看到data键的值是一个二维数组,并且x和y必须为数字,如果是折线图等的话 x代表x轴上的坐标  y代表y轴上的坐标

Handler1.ashx返回的json对象的值就是flotdata,可以像如下那样:

{json:  [ {label:'学生1',data:[[1,0.5],[2,2.5],[3,3]]},  {label:'学生2',data:[[1,2],[2,3],[3,4]]},  {label:'学生3',data:[[1,3],[2,4],[3,5]]} ]  }

在flot.htm得到该json对象的键的值后就可以将之添加到$.plot()函数里了

对于图形的样式可以通过设置第三个参数options来实现

options参数本身也是一个json对象,如可以像如下设置:

var options={lines:{show:true},points:{show:true,radius:4},legend:{show:true,margn:100,backgroundOpacity:0.5}};

显示折线,显示折线间的点并且点的半径是4像素,显示标签,标签之间有间隔,标签半透明

jQuery可视化数据显示

现在再添加一个功能就是当鼠标放到某个point上的时候该点会突出显示并且显示该点的信息

可参考http://weblogs.asp.net/rachit/archive/2010/01/26/jquery-flot-charts-with-time-series.aspx

该点会突出,仍然要设置options参数     

var options={grid:{hoverable:true,clickable:true}};

显示该点的信息,先定义一个显示信息的函数

function showTooltip(x, y, contents) {

       $('<div id="tooltip">' + contents + '</div>').css({

          position: 'absolute',

          display: 'block',

          "z-index": 10,

          top: y + 5,

          left: x + 5,

          border: '1px solid #e17009',

          padding: '3px',

           'background-color': '#fee',

         opacity: 0.70,

          margin: '5px',

           'font-size': '10px'

      }).appendTo("body").fadeIn(200);

   }

当鼠标移到一个点上时会触发一个事件,flot将该事件定义为plothover

var previousPoint=null; 设置一个全局变量,代表移动鼠标之前的那个点

$("#flot").bind("plothover",function(event,pos,item){

if(item){                       判断有没有该点信息

if(previousPoint!=item.dataPoint){     判断这次的点是否与之前的点是同一个点

previousPoint=item.dataPoint;

$("#tooltip").remove();

var x=item.dataPoint[0].toFixed(2);

var y=item.dataPoint[1].toFixed(2);

showTooltip(item.pageX,item.pageY,item.series.label+"("+x+","+y+")");

}

}else{

$("#tooltip").remove();

previousPoint=null;

}

})

item参数   item{datapoint:当前点 series:当前点所在的json对象 pageX,pageY:当前点在整个屏幕中的坐标}

datapoint[0] 当前点的x轴坐标   datapoint[1] 当前点的y轴坐标

jQuery可视化数据显示

flot画饼状图

http://blog.csdn.net/xmphoenix/archive/2011/04/03/6300163.aspx

flot画条状图只是设置options参数就可以

var options={lines:{show:true},points:{show:true,radius:4},bars:{show:true}};

http://www.cnblogs.com/qinhaijun/archive/2009/08/04/1539069.html

其他参考链接

http://www.gsls.info/archives/48.html

http://blog.csdn.net/yanqlv/archive/2009/12/19/5039067.aspx

http://www.cnblogs.com/JerryWang1991/archive/2011/06/24/2089338.html

相关推荐