最近需求中用到折線圖,單線條,多線交錯,以前是散點圖,用的是另外一個 amcharts.js,這個文檔也能找的到,迴歸早本次重點:EChartshtml
1、首先引入echarts.common.min.js文件,固然開發狀態下使用echarts.js能夠更便於調試,傳送門ajax
2、爲圖表準備一個dom容器,寬高能夠自行定義,json
<body> <!-- 爲 ECharts 準備一個具有大小(寬高)的 DOM --> <div id="main" style="width: 600px;height:400px;"></div> </body>
3、使用 echarts.init 方法初始化一個echart是實例,並經過setOption方法生成一個簡單的折線圖,以下:canvas
// 1 單獨一個 var myChart = echarts.init(document.getElementById('main')); // 指定圖表的配置項和數據 var option = { tooltip: { //跟隨鼠標顯示數值 trigger: 'axis' }, //保存圖片 toolbox: { feature: { saveAsImage: { name:'熱度監控', //圖片名 pixelRatio:2 } } }, /* grid: { //canvas距離邊界位置 left: '3%', bottom:'25%' },*/ // 聲明一個 X 軸,類目軸(category)。默認狀況下,類目軸對應到 dataset 第一列。 xAxis: { type: 'category', boundaryGap: false,//座標軸不留白 data: dataX.slice(0,10), axisLabel: { //x座標展現偏移 interval:0, rotate:60 }, /* axisLabel: { //刻度偏移 interval: 0, rotate:0, fontWeight:'400', formatter:function(value) { return value.split("").join("\n"); } }, axisTick:{ //隔幾個空格顯示刻度 interval:1, }*/ }, // 聲明一個 Y 軸,數值軸。 yAxis: { type: 'value' }, // 聲明多個 bar 系列,默認狀況下,每一個系列會自動對應到 dataset 的每一列。 series: [{ data: [820, 932, 901, 934, 932, 901, 934], type: 'line' }] }; // 使用剛指定的配置項和數據顯示圖表。 myChart.setOption(option);
其中部分屬性都附上了註釋,實際中會經常使用的是 saveAsImage ,用於圖片的保存,api
3、對於多個折線,跟上面的方法大同小異,區別於聲明圖例組件legend和系列列表賦值,demo以下:echarts
//2 多個折線 /*2*/ var myChart3 = echarts.init(document.getElementById('main3')); var option3 = { tooltip: { trigger: 'axis' }, legend: { data:['總池','用戶池','馬甲池'] }, toolbox: { feature: { saveAsImage: { name:'獎池監控', pixelRatio:2 } } }, xAxis: { type: 'category', boundaryGap: false, data: dataX2, }, yAxis: { type: 'value' }, series: [ { name:'總池', type:'line', stack: '總量', data:[120, 132, 101, 134, 90, 230, 210] }, { name:'用戶池', type:'line', stack: '總量', data:[220, 182, 191, 234, 290, 330, 310] }, { name:'馬甲池', type:'line', stack: '總量', data:[150, 232, 201, 154, 190, 330, 410] } ] }; myChart3.setOption(option3);
4、固然咱們常常用的過程當中 值是須要動態配置的,用setOption給echarts實例動態賦值:dom
/*1先聲明*/ var myChart1 = echarts.init(document.getElementById('main')); myChart1.setOption({ legend: { data:['銷量'] }, tooltip: { trigger: 'axis' }, toolbox: { feature: { saveAsImage: { name:'熱度監控', pixelRatio:2 } } }, xAxis: { type: 'category', boundaryGap: false, data: [] }, yAxis: { type: 'value' }, series: [{ name: '銷量', type: 'line', data: [] }] }); // 2異步加載數據 $.get('/admin/js/data1.json').done(function (data) { // 填入數據 myChart1.setOption({ xAxis: { type: 'category', boundaryGap: false, data: data.dataX2 }, series: [{ name: '銷量', data: data.data1 }] }); });
具體參數就不在解釋,能夠參考API中配置的說明,本身嘗試幾下就知道對應的意思了,異步
5、動態加載的時候,請求須要時間,這個過程當中能夠顯示loading動畫,也是有提供的,async
myChart1.showLoading();
這個方法我在聲明myChart1,初始化以後直接調用,動態配置得到請求後,在調用ide
myChart1.hideLoading();
隱藏動畫,舉個栗子吧:
$.ajax({ type: "get", url: 'demo.json', async: true, dataType: 'json', success: function(res) { if(res.status == 1 && res.data){ var data = res.data; myChart3.setOption({ xAxis: { type: 'category', boundaryGap: false, data: data.dataX1 }, series: [{ name:'總池', type:'line', stack: '總量', data:data.dataY1 }] }); }else if(!data){ messager('danger','暫無數據') }else{ messager('danger',res.msg) } }, error: function(error) { messager('danger',error.statusText) }, complete:function () { myChart3.hideLoading(); } });
叨逼叨:這裏series裏有參數項stack,多個線條時有用,若是設置相同的stack值,後一個系列的值會在前一個系列的值上相加。
固然,這只是冰山一角,只是本身恰好須要這點而已,更多強大的功能暫時沒有用到~~~~ ^_^