前一段時間公司作了輿情相關的軟件,輿情用到了大量的圖表,至關大的數據交互。當時沒有整理下來,昨天有一次用到這些東西,因此準備記錄下來,方便之後使用。ajax
百度echart算是百度針對數據展現作的一個圖表插件吧,通常咱們使用都不是問題,主要仍是對於對動態數據的解析。我這裏使用餅狀圖,和柱狀圖爲例:json
首先,咱們須要定義一個繪圖的容器:(class是我本身定義的,這個容器用一個div就能夠)緩存
<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.微信
準備工做作好後,下面就是咱們初始化圖表的時候了。echarts
首先咱們須要定義兩個mychart分別做爲咱們的扇形圖和柱狀圖async
var myChart = echarts.init(document.getElementById('shanxing')); var myChart2 = echarts.init(document.getElementById('zhuzhuang'));
而後分別定義option:就是數據格式的寫入:(這裏由於有兩個圖,數據分別用option ,option2來表示)ide
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註釋掉,或者刪除了,由於圖表咱們通常用來展現動態數據,監控數據變化,固定的圖表就沒有我寫這個博文的意義了。動畫
好的接下來,咱們模擬一個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("圖表請求數據失敗啦!"); } });
好了,基本就是這些,重點不是在顯示,是在你如何解析接收到的後臺數據,進行數據的配置。
這裏纔是重點,若是你只是寫個假數據,作個寫死的圖表。
那我就不說什麼了,祝你使用愉快~