jqplot 双折线显示

本文介绍了一个使用jQuery插件jqPlot实现的温湿度数据展示图表。该图表能够动态加载JSON数据,并支持用户通过按钮切换日期来查看不同的温湿度记录。此外,用户还可以选择时间段来查看连续多天的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>这是线性图</title>
<link type="text/css" rel="stylesheet"	href="jqplotjs/examples/syntaxhighlighter/styles/shCoreDefault.min.css" />
<link type="text/css" rel="stylesheet"	href="jqplotjs/examples/syntaxhighlighter/styles/shThemejqPlot.min.css" />
<link rel="stylesheet" type="text/css" 	href="easyui/css/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="easyui/css/themes/icon.css">
<link rel="stylesheet" type="text/css" href="easyui/css/demo.css">
<script type="text/javascript" src="easyui/jquery.min.js"></script>
<script class="include" type="text/javascript" src="jqplotjs/jquery.min.js"></script>
<script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>

<script class="include" type="text/javascript"	src="jqplotjs/jquery.jqplot.min.js"></script>
<script type="text/javascript" src="jqplotjs/plugins/jqplot.categoryAxisRenderer.min.js"></script>
<script type="text/javascript" src="jqplotjs/plugins/jqplot.highlighter.min.js"></script>
<script type="text/javascript" src="jqplotjs/plugins/jqplot.pointLabels.min.js"></script>
<!--放大-->
<script class="include" type="text/javascript" src="jqplotjs/plugins/jqplot.cursor.min.js"></script>
<!--必不可少的-->
<script class="include" type="text/javascript" src="jqplotjs/plugins/jqplot.dateAxisRenderer.min.js"></script>
<script type="text/javascript" src="jqplotjs/js/myOwn.js"> </script>
</head>
<body>
<input type="button"  id="btn_lastDay" value="上一天"/><input type="button" id="btn_nextDay" value="下一天"/>


起始时间:<input class="easyui-datetimebox" name="paramStart" id="paramStart"> 结束时间: <input class="easyui-datetimebox" name="paramEnd" id="paramEnd"> <input type="button" value="查询" id="getForLongTime"/>

<div id="chart1" data-height="260px" data-width="480px" style="margin-top:20px; margin-left:20px;"></div>

<div id="chart2" data-height="260px" data-width="480px" style="margin-top:20px; margin-left:20px;"></div>
<script class="code" type="text/javascript">
//定义传递的时间参数变量
var paraTime = dateChange(new Date());
         //单击前一天,获取上天的数据
     $("#btn_lastDay").click(function(){
        	$("#btn_nextDay").css('display','block'); 
        	var chart1Div=document.getElementById("chart1");
        	if(chart1Div != null){
        		p = chart1Div.parentNode;
        		p.removeChild(chart1Div);  //删除一个div
        		var createDiv = document.createElement("div");
        		createDiv.id = "chart1";
        		document.body.appendChild(createDiv); //创建一个div
        	}
        	paraTime = getLastDay(paraTime);
        	getData(1,paraTime)
        });
    //单击获取后一天的数据
     $("#btn_nextDay").click(function(){
        	paraTime = getNextDay(paraTime);
        	if(paraTime > dateChange(new Date()))
        		{
        		alert("亲,还没有到" + paraTime + "者天哦,显示的还是今天的数据");
        		paraTime = getLastDay(paraTime);
        		}else{
        			var chart1Div=document.getElementById("chart1");
                	if(chart1Div != null){
                		p = chart1Div.parentNode;
                		p.removeChild(chart1Div);  //删除一个div
                		var createDiv = document.createElement("div");
                		createDiv.id = "chart1";
                		document.body.appendChild(createDiv); //创建一个div
                	}
        			getData(1,paraTime);
        		}
        });
   //获取一段时间里面的数据
    $("#getForLongTime").click(function(){
    	$("#chart1").css('display','none'); 
    	var chart1Div=document.getElementById("chart2");
    	if(chart1Div != null){
    		p = chart1Div.parentNode;
    		p.removeChild(chart1Div);  //删除一个div
    		var createDiv = document.createElement("div");
    		createDiv.id = "chart2";
    		document.body.appendChild(createDiv); //创建一个div
    	}
    	var paraStart =  $("#paramStart").datetimebox('getValue')+""; 
    	var paraEnd = $("#paramEnd").datetimebox('getValue')+"";
    	paraStart = dateChange(paraStart);
    	paraEnd = getNextDay(paraEnd);
    	  var ajaxDataRenderer = function(url, plot, options) {
  		    var ret =[] ;
  		    $.ajax({
  		      async: false,
  		      url: url,
  		      dataType:"json",
  		      success: function(data) {
  		    	 var dataList=[];   //用来存放最终数据的一个数组
  		    	 var temList=[];    //用来存放温度的数组
  		    	 var hList=[];      //用来存放湿度的数组
  		    	 $.each(data, function (i, datas) {  //遍历每个花括号
  		    		 if(i==0){    //表示的是存放温度的一个花括号里面的数据
  		    		 for(var item in datas){
  		    			 var tem=[];
  		    			 tem.push(item);  //item是那个键,比如时间
  		    			 tem.push(datas[item]); //datas[item]获取那个键对应的值
  		    			 temList.push(tem);  //把上面获取到的一组数据存放到一个数据里面
  		    			 }
  		    		 }else{     //其他的表示存放的是存放湿度的一个花括号
  		    			 for(var item in datas){
    		    			 var hum=[];
    		    			 hum.push(item);
    		    			 hum.push(datas[item]);
    		    			 hList.push(hum);
    		    			 }
  		    		 }
                 });
  		    	 dataList.push(temList);
  		    	 dataList.push(hList);
  		         ret=dataList;
  		      }
  		    });
  		    return ret;
  		  };
    	
  		 var jsonurl = "json/getLogTemperature.d?flag=2¶mStart="+paraStart+"¶mEnd="+paraEnd;	
    	         var plot1 = $.jqplot('chart2', jsonurl, {
    	        	  title: '温湿度显示图',
    	        		 title: "温湿度显示图",
    	        	  	 animate: true,   //将线条缓缓的加载出来
    	        	     dataRenderer: ajaxDataRenderer,   //外部数据加载方式
    	        	  	    dataRendererOptions: {
    	        	  	      unusedOptionalUrl: jsonurl
    	        	  	    },
    	        	  	    seriesDefaults: {   //将线以弯曲的形式显示
    	        	              rendererOptions: {
    	        	                  smooth: true
    	        	              }
    	        	          },
    	             series: [{},{yaxis:'y2axis'}],
    	             axesDefaults:{   //axesDefaults指定的参数配置,适用于所有轴。这里是指x,y轴的label用canvas画出
    	             	  useSeriesColor:true//如果有多个纵(横)坐标轴,通过该属性设置这些坐标轴是否以不同颜色显示 
    	             },  
    	             axes: {
    	            	 xaxis: {
    	            		 renderer:$.jqplot.DateAxisRenderer,
    	                     tickRenderer: $.jqplot.CanvasAxisTickRenderer,
    	                     tickOptions: {
    	                       angle: -30,
    	                       formatString: '%Y-%m-%d'
    	                     } ,
    	                 	  label:'时间'
    	                  },
    	                 	   yaxis: {
    	                      	  label:'温度',
    	                      	 tickOptions:{
    	                              labelPosition: 'middle',
    	                              angle:-30
    	                          },
    	                      	 rendererOptions: {
    	                              forceTickAt0: true
    	                          }
    	                      	}, 
    	                        y2axis: {
    	                           label:'湿度',
    	                           tickOptions:{
    	                               labelPosition:'middle',
    	                               angle:-30
    	                           },
    	                           rendererOptions: {
    	                               alignTicks: true,
    	                               forceTickAt0: true
    	                               }
    	                         }
    	                     },
    	             cursor:{
    	                 show: true,
    	                 zoom: true
    	             }
    	         });
    });
    
    $(document).ready(
    		getData(1,paraTime)
    		);
    
    function getData(flag,parameterTime){
  	  var ajaxDataRenderer = function(url, plot, options) {
		    var ret = "{}" ;
		    $.ajax({
		      async: false,
		      url: url,
		      dataType:"json",
		      success: function(data) {
		    	 var dataList=[];   //用来存放最终数据的一个数组
		    	 var temList=[];    //用来存放温度的数组
		    	 var hList=[];      //用来存放湿度的数组
		    	 $.each(data, function (i, datas) {  //遍历每个花括号
		    		 if(i==0){    //表示的是存放温度的一个花括号里面的数据
		    		 for(var item in datas){
		    			 var tem=[];
		    			 tem.push(item);  //item是那个键,比如时间
		    			 tem.push(datas[item]); //datas[item]获取那个键对应的值
		    			 temList.push(tem);  //把上面获取到的一组数据存放到一个数据里面
		    			 }
		    		 }else{     //其他的表示存放的是存放湿度的一个花括号
		    			 for(var item in datas){
  		    			 var hum=[];
  		    			 hum.push(item);
  		    			 hum.push(datas[item]);
  		    			 hList.push(hum);
  		    			 }
		    		 }
               });
		    	 dataList.push(temList);
		    	 dataList.push(hList);
		         ret=dataList;
		      }
		    });
		    if(ret==","){
		    	alert(parameterTime + ":这天没有记录");
		    }
		    return ret;
		  };
  var jsonurl = "json/getLogTemperature.d?flag="+flag+"¶meterTime="+parameterTime;
  $.jqplot.config.enablePlugins = true;
  var plot1 = $.jqplot('chart1', jsonurl,  {
  	 title: "温湿度显示图",
  	 animate: true,   //将线条缓缓的加载出来
     dataRenderer: ajaxDataRenderer,   //外部数据加载方式
  	    dataRendererOptions: {
  	      unusedOptionalUrl: jsonurl
  	    },
  	    seriesDefaults: {   //将线以弯曲的形式显示
              rendererOptions: {
                  smooth: true
              }
             // showMarker: true
          },
    series:[{},{yaxis:'y2axis'}],    //series参数是一个对象数组,一个对象对应一组数据 ,主要是为了显示两个y轴
    axesDefaults:{   //axesDefaults指定的参数配置,适用于所有轴。这里是指x,y轴的label用canvas画出
  	  useSeriesColor:true//如果有多个纵(横)坐标轴,通过该属性设置这些坐标轴是否以不同颜色显示 
  },  
    axes: {
  	  xaxis: {
      	  renderer:$.jqplot.CategoryAxisRenderer, // x轴用数据里面的数组第一个元素
      	  label:'时间'
      	   },
      	   yaxis: {
           	  label:'温度',
           	 tickOptions:{
                   labelPosition: 'middle',
                   angle:-30
               },
           	 rendererOptions: {
                   forceTickAt0: true
               }
           	}, 
             y2axis: {
                label:'湿度',
                tickOptions:{
                    labelPosition:'middle',
                    angle:-30
                },
                rendererOptions: {
                    alignTicks: true,
                    forceTickAt0: true
                    }
              }
    }, highlighter: {  //当鼠标移到上面时将数据显示出来
          show: true, 
          showLabel: true, 
          tooltipAxes: 'y',
          sizeAdjust:01 , tooltipLocation : 'ne'
      }
  }); 
    }
</script>  


</body>
</html>
</pre><pre name="code" class="html"><span style="font-family: Arial, Helvetica, sans-serif;">效果图</span>

<img src="https://img-blog.csdn.net/20140722110019411?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDI1NjE3Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值