zoukankan      html  css  js  c++  java
  • 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}
    ({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}
    ({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以及样式,配置图表信息(网上有很多解析),获取数据并且加以显示。哦啦

    大神们有更好的方法,求推荐呀~~~!

  • 相关阅读:
    (转)Android IPC机制详解
    (转)android 多线程
    (转)android进程间通信:使用AIDL
    (转)如何调用SQLITE工具查看数据库
    (转)Android 自动 打包
    (转)如何手动编译一个APK
    (转)编译Android源码的全过程
    Js打造层拖动实例:网站菜单拖拽移位效果
    JS鼠标悬停时动态翻滚的紫色导航条
    jQuery1.3.2竖向的伸缩菜单
  • 原文地址:https://www.cnblogs.com/moutudou/p/7903299.html
Copyright © 2011-2022 走看看