百度echart算是百度针对数据展现作的一个图表插件吧,通常咱们使用都不是问题,主要仍是对于对动态数据的解析。我这里使用饼状图,和柱状图为例:ajax
首先,咱们须要定义一个绘图的容器:(class是我本身定义的,这个容器用一个div就能够)json
<div class="fm_box pd-10 border-grey" id="shanxing" style="height: 500px;"></div>
<div class="fm_box pd-10 border-grey" id="zhuzhuang" style="height: 500px;"></div>
而后须要引入咱们的echart.min.js.缓存
准备工做作好后,下面就是咱们初始化图表的时候了。微信
首先咱们须要定义两个mychart分别做为咱们的扇形图和柱状图echarts
var myChart = echarts.init(document.getElementById('shanxing'));
var myChart2 = echarts.init(document.getElementById('zhuzhuang'));
而后分别定义option:就是数据格式的写入:(这里由于有两个图,数据分别用option ,option2来表示)async
option = { title : { text: '某站点用户访问来源', x:'center' }, tooltip : { trigger: 'item', formatter: "{a} <br/>{b} : {c} ({d}%)" }, legend: { orient : 'vertical', x : 'left', data:[] // '直接访问','邮件营销','联盟广告','视频广告','搜索引擎' }, toolbox: { show : true, feature : { mark : {show: true}, dataView : {show: true, readOnly: false}, magicType : { show: true, type: ['pie', 'funnel'], option: { funnel: { x: '25%', width: '50%', funnelAlign: 'left', max: 1548 } } }, restore : {show: true}, saveAsImage : {show: true} } }, calculable : true, series : [ { name:'访问来源', type:'pie', radius : '55%', center: ['50%', '55%'], data:[ // {value:335, name:'直接访问'}, // {value:310, name:'邮件营销'}, // {value:234, name:'联盟广告'}, // {value:135, name:'视频广告'}, // {value:1548, name:'搜索引擎'} ] } ] }; option2 = { title : { text: '某地区蒸发量和降水量', subtext: '纯属虚构' }, tooltip : { trigger: 'axis' }, legend: { data:['项目数'] }, toolbox: { show : true, feature : { mark : {show: true}, dataView : {show: true, readOnly: false}, magicType : {show: true, type: ['line', 'bar']}, restore : {show: true}, saveAsImage : {show: true} } }, calculable : true, xAxis : [ { type : 'category', data : [] } ], yAxis : [ { type : 'value' } ], series : [ { name:'项目', type:'bar', data:[], } ] };
你们能够看到,我把series里面的data注释掉,或者删除了,由于图表咱们通常用来展现动态数据,监控数据变化,固定的图表就没有我写这个博文的意义了。ide
好的接下来,咱们模拟一个json文件。用做咱们的数据。很简单的数据格式。动画
{"result":1,"msg":null,"object":[["网站","微博","微信","论坛","新闻","政务","报刊"],[10,20,180,995,450,250,360]],"totalPage":0,"sum":0}
这个json是一个普通的数据。咱们比方说,在后台拿到的就是这么一串json、接下来就是如何解析,而且放入图表绘制的方法中。网站
咱们须要先作请求。搜索引擎
$.ajax({ type: "get", async: true, //同步执行 url: "tets.json", dataType: "json", //返回数据形式为json success: function(data){ console.log(data.object[0].length); for(var i= 0,len=data.object[0].length;i<len;i++){ var json={}; var data2=data.object[0]; json.name=data.object[0][i]; json.value=data.object[1][i]; option.series[0].data[i]=json; option.legend.data=data.object[0]; option2.xAxis[0].data=data.object[0]; option2.series[0].data=data.object[1]; } myChart.clear(); myChart.hideLoading(); myChart.setOption(option); myChart2.clear(); myChart2.hideLoading(); myChart2.setOption(option2);// 使用刚指定的配置项和数据显示图表。 }, error: function(errorMsg) { alert("图表请求数据失败啦!"); } });
其中的url是咱们请求数据的接口,当咱们请求到数据以后,对数据进行遍历。你们可能看到我在其中定义了一个对象,由于咱们根据请求到的数据来看,并不太符合咱们的要求,因此咱们须要进行数据的转换。
详细的再也不多说,本身参考。
咱们来讲说myChart.clear();myChart.hideLoading();myChart.setOption(option);
第一个是在每一次绘制图标前,作一次初始化,清空画布,目的是为了防止数据没有清理干净,会存在缓存或者什么。这样会影响绘图效果。
第二个是图片绘制的时候一个相似加载的动画效果。还有个myChart.showLoading();
第三个是绘制!至关于调用全部的配置,开始绘制。上边的容器,数据的写入,都是为了准备,而myChart.setOption();才是真正的绘制,使用刚指定的配置项和数据显示图表。
下边是除了容器,配置的完整代码:
//echart var myChart = echarts.init(document.getElementById('qinggan')); var myChart2 = echarts.init(document.getElementById('bar')); option = { title : { text: '某站点用户访问来源', x:'center' }, tooltip : { trigger: 'item', formatter: "{a} <br/>{b} : {c} ({d}%)" }, legend: { orient : 'vertical', x : 'left', data:[] // '直接访问','邮件营销','联盟广告','视频广告','搜索引擎' }, toolbox: { show : true, feature : { mark : {show: true}, dataView : {show: true, readOnly: false}, magicType : { show: true, type: ['pie', 'funnel'], option: { funnel: { x: '25%', width: '50%', funnelAlign: 'left', max: 1548 } } }, restore : {show: true}, saveAsImage : {show: true} } }, calculable : true, series : [ { name:'访问来源', type:'pie', radius : '55%', center: ['50%', '55%'], data:[ // {value:335, name:'直接访问'}, // {value:310, name:'邮件营销'}, // {value:234, name:'联盟广告'}, // {value:135, name:'视频广告'}, // {value:1548, name:'搜索引擎'} ] } ] }; myChart.hideLoading(); myChart.setOption(option); option2 = { title : { text: '某地区蒸发量和降水量', subtext: '纯属虚构' }, tooltip : { trigger: 'axis' }, legend: { data:['项目数'] }, toolbox: { show : true, feature : { mark : {show: true}, dataView : {show: true, readOnly: false}, magicType : {show: true, type: ['line', 'bar']}, restore : {show: true}, saveAsImage : {show: true} } }, calculable : true, xAxis : [ { type : 'category', data : [] } ], yAxis : [ { type : 'value' } ], series : [ { name:'项目', type:'bar', data:[], } ] }; //情感分析图 $.ajax({ type: "get", async: true, //同步执行 url: "tets.json", dataType: "json", //返回数据形式为json success: function(data){ console.log(data.object[0].length); for(var i= 0,len=data.object[0].length;i<len;i++){ var json={}; var data2=data.object[0]; json.name=data.object[0][i]; json.value=data.object[1][i]; option.series[0].data[i]=json; option.legend.data=data.object[0]; option2.xAxis[0].data=data.object[0]; option2.series[0].data=data.object[1]; } myChart.clear(); myChart.hideLoading(); myChart.setOption(option); myChart2.clear(); myChart2.hideLoading(); myChart2.setOption(option2);// 使用刚指定的配置项和数据显示图表。 }, error: function(errorMsg) { alert("图表请求数据失败啦!"); } });
好了,基本就是这些,重点不是在显示,是在你如何解析接收到的后台数据,进行数据的配置。
这里才是重点,若是你只是写个假数据,作个写死的图表。