这次是利用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以及样式,配置图表信息(网上有很多解析),获取数据并且加以显示。哦啦
大神们有更好的方法,求推荐呀~~~!