Jqplot+asp.net画图实现
来源:互联网 发布:日本的电视直播软件 编辑:程序博客网 时间:2024/04/29 08:15
摘自:http://www.cnblogs.com/zhangxiaolin/archive/2012/02/16/2354340.html
说明:最近由于项目的需求研究了一段时间的Jqplot,做了个例子分享下,有不足之处请多指正。Jqplot是用Jquery框架开发的画图组件,开源,免费,而且兼容性比较好,扩展性强,有兴趣的朋友可以去官网下载学习,
官网:www.Jqplot.com
利用Jqplot首先引用底层实现的Css与JS文件,然后再利用其提供的方法实现对需求的描述:下面是一个实时统计数据的曲线
备注:利用Jquery框架扩展的Jqplot图形组件,不仅开源,免费,而且兼容性比较好,扩展性强。支持现行的浏览器。官方站点为:www.jqplot.com.可以从该站点上下载需要的JS文件及例子.
利用Jqplot首先引用底层实现的Css与JS文件,然后再利用其提供的方法实现对需求的描述:下面是一个实时统计数据的曲线
一.引入:
1.jquery.jqplot.css--提供样式支持
2.excanvas.js---兼容IE7,8,9浏览器,其他浏览器可以不引入此文件
3.jquery.min.js---Jquery框架的支持
4.jquery.jqplot.min.js---Jqplot图形绘制核心JS
以上文件必须引入,如果实现其他的功能可以接着引入以下文件:该部分文件可以放到页面最末端,以提高页面加载速度。
5.jqplot.highlighter.min.js---对鼠标悬浮的支持
6.jqplot.json2.min.js----动态获取Json数据的支持
7.jqplot.dataAxisRenderer.min.js---提供对横坐标格式化显示的支持,比如传入日期格式;
8.jqplot.cursor.min.js---坐标点取值的支持。
二.实现部分代码
前端:Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TestAjax._Default" %><!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 runat="server"> <title></title> <link href="css/jquery.jqplot.min.css" rel="stylesheet" type="text/css" /> <script src="js/jquery.min.js" type="text/javascript"></script> <script src="js/jquery.jqplot.min.js" type="text/javascript"></script> <script src="js/excanvas.min.js" type="text/javascript"></script> <script src="js/jqplot.dateAxisRenderer.js" type="text/javascript"></script> </head><body> <div class="example-plot" id="chart1"></div> <input type="button" value="Test" id="btnLoadData" /> <script type="text/javascript"> $(document).ready(function() { laodData(); $("#btnLoadData").bind("click", laodData); }); var laodData = function() { var ajaxDataRenderer = function(url, plot, options) { var ret = null; var dataJson = [[], []]; $.ajax({ async: false, url: url, dataType: "json", success: function(data) { //构造数组 for (var i = 0; i < data.length; i++) { var chObj = data[i]; for (var j = 0; j < chObj.length; j++) { dataJson[i].push([chObj[j].dTime, chObj[j].V]); } } //dataJson.sort(); ret = dataJson; } }); return ret; }; var jsonurl = "Handler/Handler.ashx"; var options = { title: "ajax返回数据展现", seriesDefaults: { showMarker: true, //是否显示点 pointLabels: { show: true } //, label: '曲线1' }, series: [{ label: '曲线1', neighborThreshold: -1 }, { label: '曲线2', neighborThreshold: -1}], legend: { show: true, location: 'se' }, //横轴为日期时必须有如下代码 axes: { xaxis: { renderer: $.jqplot.DateAxisRenderer, tickOptions: { formatString: "%H:%M"}//, //numberTicks: 4 //tickInterval: '10 minutes' //, max: '23:59' // , min: "23:59AM" //, ticks: ['00:05', '00:10', '00:15', '00:20', '00:25', '00:30', '00:35'] }, //%m-%#d:MM-dd;%H:%M:小时:分钟形式 yaxis: { renderer: $.jqplot.LogAxisRenderer } }, //悬浮展现控制 highlighter: { show: true, yvalues: 1, tooltipAxes: "xy", formatString: '<table class="jqplot-highlighter"> \ <tr><td>日期:</td><td>%s</td></tr> \ <tr><td>人数:</td><td>%s</td></tr></table>' }, dataRenderer: ajaxDataRenderer, cursor: { show: true }, dataRendererOptions: { unusedOptionalUrl: jsonurl } } plot = $.jqplot("chart1", jsonurl, options); } </script></body></html>
后端代码:Handler/Handler.ashx
using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace TestAjax.Handler{ /// <summary> /// $codebehindclassname$ 的摘要说明 /// </summary> public class Handler : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; Random random = new Random(100); DateTime dtBeginDate = DateTime.Parse("2012-02-01"); System.Collections.ArrayList arrList = new System.Collections.ArrayList(); IList<data> dataList = new List<data>();//存储第一条曲线数据 IList<data> dataList2 = new List<data>();//存储第二条曲线数据 for (int i = 0; i < 135; i++) { dataList.Add(new data(dtBeginDate.ToString(), random.Next(100))); dtBeginDate = dtBeginDate.AddMinutes(5); } ////第2条曲线数据 //DateTime dtBeginDate1 = DateTime.Parse("2012-02-01"); //for (int i = 0; i < 6; i++) //{ // dataList2.Add(new data(dtBeginDate1.ToString(), random.Next(100))); // dtBeginDate1 = dtBeginDate1.AddMinutes(5); //} arrList.Add(dataList); //arrList.Add(dataList2); System.Text.StringBuilder sb = new System.Text.StringBuilder(); System.Web.Script.Serialization.JavaScriptSerializer jscriptSeri = new System.Web.Script.Serialization.JavaScriptSerializer(); jscriptSeri.Serialize(arrList, sb); context.Response.Write(sb.ToString()); } public bool IsReusable { get { return false; } } } class data { public data(string _dTime, float _v) { this.dTime = _dTime; this.V = _v; } public string dTime { set; get; } public float V { set; get; } }}
.展现效果:
- Jqplot+asp.net画图实现
- Asp.net网页画图
- Jquery的画图插件-jqPlot+
- ASP.NET画图系列之实现Pie图(圆饼图)
- ASP.NET画图系列之实现Curve图(曲线图)
- ASP.NET画图系列之实现Bar图(柱状图)
- ASP.NET画图全攻略
- Javascript“画图”Asp.net版
- Asp.Net-GDI+画图示例
- asp.net 2.0 Chart画图
- Asp.Net-GDI+画图示例
- 手把手教你jQuery jqPlot画图插件
- ASP.NET画图全攻略(上)
- ASP.NET画图全攻略(下)
- asp.net Chart画图后台代码
- ASP.NET画图控件ChartControl免费控件
- JQPLOT
- jqplot折线图实现 例子
- Flash AMF协议的特点
- C输入5个数据按从大到小的顺序排列
- 硬件断点和软件断点
- Hibernate4实战 之 第一部分 Hibernate入门
- [转载][教程] C/C++指针简易教程
- Jqplot+asp.net画图实现
- WinCE6.0 Platform Builder有试用时间限制,使用此方法破解限制。
- 斯特林数 [Stirling Numbers]
- 动态创建CListCtrl代码
- Php连接Cassandra慢问题解决方案(Using Cassandra with PHP)
- 安装ubuntu10.04 下 安装 scribe thrift
- std::find ,set.find, multiset.find, map.find和multimap.find算法总结
- 课堂笔记
- 动态创建的CListCtrl控件的消息响应