echarts折线图实例一

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tan9374/article/details/78093908

1.先看看我们要的一个效果:在点击显示30天和显示2天,数据可以切换,并且另外还要加一个时间区域查询出来;接下来我贴一下具体的操作:

2.以上边的为例,根据回来的数据结构进行解析:

//拿2天的数据
var data2yespv=[];
var data2todpv=[];
var data2yesuv=[];
var data2toduv=[];

$.ajax({
	    type: "GET",
	    url: "json/getTwoDayWebView.json",
	    dataType:'json',
	    data: "",
	    success: function(data){
	    	for (key in data.yesterDay.uv){data2yesuv.push(data.yesterDay.uv[key])};
	    	for (key in data.yesterDay.pv){data2yespv.push(data.yesterDay.pv[key])};
	    	for (key in data.toDay.uv){data2toduv.push(data.toDay.uv[key])};
	    	for (key in data.toDay.pv){data2todpv.push(data.toDay.pv[key])};
	    	
			clickData2();
	    }
	});
调用函数,写入上下俩个图,需要注意的是下面这句话,如果你要进行echarts图表的刷新,必须写成这样,要不然数据会累加;
echartsWarppv.setOption(option,true);

function clickData2(){
	// 基于准备好的dom,初始化echarts实例
    var echartsWarppv = echarts.init(document.getElementById('echartsWarppv'));
    option = {
	    title: {
	        text: '最近2天pv图',
	        textStyle:{
	        	color: 'blue',
				fontStyle: 'normal',
				fontWeight: 'normal',
				fontFamily: '微软雅黑',
				fontSize: fontsize12,
	        }
	    },
	    tooltip: {
	        trigger: 'axis'
	    },
	    legend: {
	        data:['昨日pv','今日pv']
	    },
	    grid: {
	        left: '3%',
	        right: '4%',
	        bottom: '3%',
	        containLabel: true
	    },
	    xAxis: {
	        type: 'category',
	        boundaryGap: false,
	        data: ['0:00','1:00','2:00','3:00','4:00','5:00','6:00','7:00','8:00','9:00','10:00','11:00','12:00','13:00','14:00','15:00','16:00','17:00','18:00','19:00','20:00','21:00','21:00','22:00','23:00']
	    },
	    yAxis: {
	        type: 'value'
	    },
	    series: [
	        {
	            name:'昨日pv',
	            type:'line',
	            smooth:true,
	            stack: '总量',
	            data:data2yespv
	        },
	        {
	            name:'今日pv',
	            type:'line',
	            smooth:true,
	            stack: '总量',
	            data:data2todpv
	        }
	    ]
	};
    echartsWarppv.setOption(option,true);
    //-----------------------------------------------------------------
    var echartsWarpuv = echarts.init(document.getElementById('echartsWarpuv'));
    option = {
	    title: {
	        text: '最近2天uv图',
	        textStyle:{
	        	color: 'blue',
				fontStyle: 'normal',
				fontWeight: 'normal',
				fontFamily: '微软雅黑',
				fontSize: fontsize12,
	        }
	    },
	    tooltip: {
	        trigger: 'axis'
	    },
	    legend: {
	        data:['昨日uv','今日uv']
	    },
	    grid: {
	        left: '3%',
	        right: '4%',
	        bottom: '3%',
	        containLabel: true
	    },
	    xAxis: {
	        type: 'category',
	        boundaryGap: false,
	        data: ['0:00','1:00','2:00','3:00','4:00','5:00','6:00','7:00','8:00','9:00','10:00','11:00','12:00','13:00','14:00','15:00','16:00','17:00','18:00','19:00','20:00','21:00','21:00','22:00','23:00']
	    },
	    yAxis: {
	        type: 'value'
	    },
	    series: [
	        {
	            name:'昨日uv',
	            type:'line',
	            smooth:true,
	            stack: '总量',
	            data:data2yesuv
	        },
	        {
	            name:'今日uv',
	            type:'line',
	            smooth:true,
	            stack: '总量',
	            data:data2toduv
	        }
	    ]
	};
    echartsWarpuv.setOption(option,true);
}
3.到现在,俩个图加载出来了;然后点击显示30天,进行的操作是什么呢?

其实你会发现,除了option变化之外,其他的没有发生变化,这里其实可以封装一下的。。。

function clickData30(){
	// 基于准备好的dom,初始化echarts实例
    var echartsWarppv = echarts.init(document.getElementById('echartsWarppv'));
    var option = {
	    title: {
	        text: '最近30天pv图',
	        textStyle:{
	        	color: 'blue',
				fontStyle: 'normal',
				fontWeight: 'normal',
				fontFamily: '微软雅黑',
				fontSize: fontsize12,
	        }
	    },
	    tooltip: {
	        trigger: 'axis'
	    },
	    legend: {
	        data:['pv']
	    },
	    grid: {
	        left: '3%',
	        right: '4%',
	        bottom: '3%',
	        containLabel: true
	    },
	    xAxis: {
	        type: 'category',
	        boundaryGap: false,
	        data: data30key
	    },
	    yAxis: {
	        type: 'value'
	    },
	    series: [
	        {
	            name:'pv',
	            type:'line',
	            smooth:true,
	            stack: '总量',
	            data:data30valuepv
	        }
	    ]
	};
    echartsWarppv.setOption(option, true);
	//-----------------------------------------------------------------
    var echartsWarpuv = echarts.init(document.getElementById('echartsWarpuv'));
    option = {
	    title: {
	        text: '最近30天uv图',
	        textStyle:{
	        	color: 'blue',
				fontStyle: 'normal',
				fontWeight: 'normal',
				fontFamily: '微软雅黑',
				fontSize: fontsize12,
	        }
	    },
	    tooltip: {
	        trigger: 'axis'
	    },
	    legend: {
	        data:['uv']
	    },
	    grid: {
	        left: '3%',
	        right: '4%',
	        bottom: '3%',
	        containLabel: true
	    },
	    xAxis: {
	        type: 'category',
	        boundaryGap: false,
	        data: data30key
	    },
	    yAxis: {
	        type: 'value'
	    },
	    series: [
	        {
	            name:'uv',
	            type:'line',
	            smooth:true,
	            stack: '总量',
	            data:data30valueuv
	        }
	    ]
	};
    // 使用刚指定的配置项和数据显示图表。
    echartsWarpuv.setOption(option,true);
}
4.最后有一个时间段查询,像下面:这里用的是jqueryUI的时间插件


需要进行的代码操作:

function timeArea(){
	var timestart=$('#datepicker').val().replace(/-/g, "");//转换时间格式
	var timeend=$('#datepicker2').val().replace(/-/g, "");
	if(timestart&&timeend){
		var dataAreapv=[];
		var dataAreauv=[];
		var dataAreakey=[];
		var start,end;
		for(var i=0;i<data30key.length;i++){
			data30key[i]==timestart?start=i:"";
			data30key[i]==timeend?end=i:""; 
		}
		dataAreakey=data30key.slice(start,end+1);
		dataAreapv=data30valuepv.slice(start,end+1);
		dataAreauv=data30valueuv.slice(start,end+1);
		
		// 基于准备好的dom,初始化echarts实例
	    var echartsWarppv = echarts.init(document.getElementById('echartsWarppv'));
	    var option = {
		    title: {
		        text: timestart+'到'+timeend+'pv图',
		        textStyle:{
		        	color: 'blue',
					fontStyle: 'normal',
					fontWeight: 'normal',
					fontFamily: '微软雅黑',
					fontSize: fontsize12,
		        }
		    },
		    tooltip: {
		        trigger: 'axis'
		    },
		    legend: {
		        data:['pv']
		    },
		    grid: {
		        left: '3%',
		        right: '4%',
		        bottom: '3%',
		        containLabel: true
		    },
		    xAxis: {
		        type: 'category',
		        boundaryGap: false,
		        data: dataAreakey
		    },
		    yAxis: {
		        type: 'value'
		    },
		    series: [
		        {
		            name:'pv',
		            type:'line',
		            smooth:true,
		            stack: '总量',
		            data:dataAreapv
		        }
		    ]
		};
	    echartsWarppv.setOption(option, true);
		//-----------------------------------------------------------------
	    var echartsWarpuv = echarts.init(document.getElementById('echartsWarpuv'));
	    option = {
		    title: {
		        text: timestart+'到'+timeend+'uv图',
		        textStyle:{
		        	color: 'blue',
					fontStyle: 'normal',
					fontWeight: 'normal',
					fontFamily: '微软雅黑',
					fontSize: fontsize12,
		        }
		    },
		    tooltip: {
		        trigger: 'axis'
		    },
		    legend: {
		        data:['uv']
		    },
		    grid: {
		        left: '3%',
		        right: '4%',
		        bottom: '3%',
		        containLabel: true
		    },
		    xAxis: {
		        type: 'category',
		        boundaryGap: false,
		        data: dataAreakey
		    },
		    yAxis: {
		        type: 'value'
		    },
		    series: [
		        {
		            name:'uv',
		            type:'line',
		            smooth:true,
		            stack: '总量',
		            data:dataAreauv
		        }
		    ]
		};
	    // 使用刚指定的配置项和数据显示图表。
	    echartsWarpuv.setOption(option,true);
	}
}
还有jqueryUId时间插件的用法:

//时间插件
	$('#datepicker').datepicker({
		maxDate: "+0D",
		dateFormat:"yy-mm-dd"
	});
	$('#datepicker2').datepicker({
		maxDate: "+0D",
		dateFormat:"yy-mm-dd"
	});





















猜你喜欢

转载自blog.csdn.net/tan9374/article/details/78093908
今日推荐