Echarts獲取數據繪制圖表


這次是利用mui框架實現一個手機移動端的項目。基本的框架已經實現,主要來獲取數據實現一個圖表的展示。

首先引入插件:echarts.js

<script src="../resources/js/echarts.js" type="text/javascript" charset="utf-8" ></script>

然后再html頁面,給圖表一個空間,以便放置圖表:

<div class="pie_menu">
	<div class="left_menu" id="left_menu"></div>
</div>
<div class="pie_menu">
	<div class="right_menu" id="right_menu"></div>
</div>
需要做兩個圖表,所以就開了兩個空間

接下來是獲取數據部分:

$(function(){
	mui.init();//初始化mui
	var leftPie;//部門:第一個空間
	var rightPie;//類型:第二個空間
	var data = [];//第一個空間的數據配置
	var data2 = [];//第二個空間的數據配置
	function setOption(data){
		var leftMenu = echarts.init(document.getElementById('left_menu'));
		var rightMenu = echarts.init(document.getElementById('right_menu'));
		window.onresize = (leftMenu.resize && rightMenu.resize);//圖表隨着屏幕變化而變化
		//類型圖表配置
		rightOption = {	//類型
				title : {
      		         text: '點統計(按類型)',//圖表標題
      		         x:'center'	//圖表位置樣式
      		     },
      		   tooltip : {
      		        trigger: 'item',
      		        formatter: "{a} <br/>{b} : {c} ({d}%)"	//鼠標懸浮顯示數據
      		    },
      		  legend: {	//圖標,圖示
     		        orient: 'vertical',
     		        bottom:30,
     		        left: 'left',
     		        data: data	//此數據和series內的數據相同(此項是獲取之后的數據)
     		    },
     		   color:[ '#EB7C30' , '#5A99D3'],	//顏色指定
      		  series : [
	       		        {
	       		            name: '點統計',
	       		            type: 'pie',
	       		            radius : '55%',
	       		            center: ['55%', '50%'],
	       		            label: {
	       		            	normal: {
	       		            		formatter: "{c}\n({d}%)",	//在圖標上顯示的數據
	       		            		show: true,
	       		            		position: 'inner',//文字顯示位置
	       		            	textStyle: {
	       		            		fontSize: '14',
	       		            		fontWeight: 'normal'
	       		            		}
	       		            	}
	       		            },
	       		         data:data,//此項同是獲取的數據
	       		            itemStyle: {
	       		                emphasis: {	//餅圖或柱狀圖顯示的樣式
	       		                    shadowBlur: 10,
	       		                    shadowOffsetX: 0,
	       		                    shadowColor: 'rgba(0, 0, 0, 0.5)'
	       		                }
	       		            }
	       		        }
	       		    ]
		}
          //部門圖表數據配置
		leftOption = {	//部門
				title : {
      		         text: '點統計(按部門)',//標題
      		         x:'center'	//樣式
      		     },
      		   tooltip : {
      		        trigger: 'item',
      		        formatter: "{a} <br/>{b} : {c} ({d}%)"	//懸浮顯示數據  a:代表標題;b代表name值;c代表name的value值;d代表百分比數值;這四個各有各的好處,可嘗試,主要是數據顯示啦
      		    },
      		  legend: {	//圖標,圖示
     		        orient: 'vertical',
     		        bottom:30,
     		        left: 'left',
     		        data: data2
     		    },
     		   color:['#5A99D3', '#FFBF00','#A5A5A5','#EB7C30'],	//顏色指定
      		  series : [
	       		        {
	       		            name: '監控點統計',
	       		            type: 'pie',
	       		            radius : '55%',
	       		            center: ['55%', '50%'],
	       		            label: {
	       		            	normal: {
	       		            		formatter: "{c}\n({d}%)",	//在圖標上顯示的數據
	       		            		show: true,
	       		            		position: 'inner',//文字顯示位置
	       		            	textStyle: {
	       		            		fontSize: '14',
	       		            		fontWeight: 'normal'
	       		            		}
	       		            	}
	       		            },
	       		         data:data2,
	       		            itemStyle: {
	       		                emphasis: {	//餅圖或柱狀圖顯示的樣式
	       		                    shadowBlur: 10,
	       		                    shadowOffsetX: 0,
	       		                    shadowColor: 'rgba(0, 0, 0, 0.5)'
	       		                }
	       		            }
	       		        }
	       		    ]
		}
		leftMenu.setOption(leftOption);//部門配置設置
		rightMenu.setOption(rightOption);//類型
	}
	//獲取數據
	function getMapData(limit){ 
		$.buslongAjax({
			url : $.operaData.monitorypoint.url,
			data : $.operaData.monitorypoint.param,
			dataType:'JSON',
			success:function(objdata){
				var label = [];
				var allData = []
				if(objdata){
					$.each(objdata,function(i,p){
                        console.log(objdata);//可打印獲取的數據
			        	label = i ;//
			        	allData ={'name':i,'value':p};//設置鍵值對形式
                        //以下是做的一個判斷,兩個空間放置不同的數據,因后台數據傳過來的是一整套,就自己判斷來顯示數據了。
			        	leftPie = $("#left_menu");
			        	rightPie = $("#right_menu");
			        	if(rightPie){	//如果按照類型
			        		if(allData.name == "applicationnum" || allData.name == "platformnum"){
				        		if(allData.name == "applicationnum" ){
				        			allData.name = "平台類"; 
				        		}if(allData.name == "platformnum"){
				        			allData.name = "應用類";
				        		}
				        		var oneData = {};
								var oneData = {name:allData.name,value:allData.value};
								data.push(oneData);//將數據填到data里面
				        	}
			        	}
			        	if(leftPie){	//如果按照部門
			        		if(allData.name == "itzhicheng" || allData.name == "jingfen" || allData.name == "xitong" || allData.name == "yewuyunying"){
				        		if(allData.name == "itzhicheng" ){
				        			allData.name = "IT支撐中心"; 
				        		}if(allData.name == "jingfen"){
				        			allData.name = "經分支撐中心";
				        		}if(allData.name == "xitong" ){
				        			allData.name = "系統維護中心"; 
				        		}if(allData.name == "yewuyunying"){
				        			allData.name = "業務運營中心";
				        		}
				        		var oneData = {};
								var oneData = {name:allData.name,value:allData.value};
								data2.push(oneData);//將數據添到另一個空間的data2里面
				        	}
			        	}
			        });
				}
				//option.series[0].data=data;
				setOption(data);//執行setOption函數。傳參,將數據傳到配置信息內
			}
		});
	}
	getMapData(2);
})

  

好了,到了此處數據也獲取下來了,也顯示到頁面中了,最終效果為:

 

 

 

 雖然有點丑,哈哈,但是后邊再調節吧,第一次做這種圖表,還挺有意思的,圖表還有另外一個插件,Highcharts,這個也挺有意思,有時間可以去學習玩玩。

整的來說,就是引入插件,寫入HTML以及樣式,配置圖表信息(網上有很多解析),獲取數據並且加以顯示。哦啦

大神們有更好的方法,求推薦呀~~~!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM