ECharts圖——addData屬性實現動態實時更新資料
阿新 • • 發佈:2019-01-10
此為網上的demo做了修改,記錄以便日後學習。
注:addData是在ECharts2中提出的,在ECharts3移除了addData方法,可以考慮用push的方法把資料從尾部新增放進去,然後用shift移除首部第一個資料,任然可以達到更新的效果。在ECharts3中也參考appendData方法。
(1)一般寫法(可以直接執行看效果):
<div id="main" style="height:400px"></div> <script src="http://echarts.baidu.com/build/dist/echarts.js"></script> <script type="text/javascript"> require.config({ paths: { echarts: 'http://echarts.baidu.com/build/dist' } }); // 使用 require ( [ 'echarts', 'echarts/chart/line' , 'echarts/chart/bar' // 使用柱狀圖就載入bar模組,按需載入 ], function (ec) { // 基於準備好的dom,初始化echarts圖表 var myChart = ec.init(document.getElementById('main')); var option = { title : { text: '測試', subtext: '純屬測試' }, tooltip : { trigger: 'axis' }, legend: { data:['1', '2'] }, toolbox: { show : true, feature : { mark : {show: true}, dataView : {show: true, readOnly: false}, magicType : {show: true, type: ['line', 'bar']}, restore : {show: true}, saveAsImage : {show: true} } }, dataZoom : { show : false, start : 0, end : 100 }, xAxis : [ { type : 'category', boundaryGap : true, data : (function (){ var now = new Date(); var res = []; var len = 4; while (len--) { res.unshift(now.toLocaleTimeString().replace(/^\D*/,'')); now = new Date(now - 2000); } return res; })() }, { type : 'category', boundaryGap : true, data : (function (){ var res = []; var len = 200; while (len--) { res.push(len + 1); } return res; })() } ], yAxis : [ { type : 'value', }, { type : 'value', } ], series : [ { name:'aaa', type:'bar', xAxisIndex: 1, yAxisIndex: 1, data:(function (){ var res = []; var len = 200; while (len--) { res.push(Math.round(Math.random() * 1000)); } return res; })() }, ] };; myChart.setOption(option); var timeTicket; clearInterval(timeTicket); timeTicket = setInterval(function (){ // 動態資料介面 addData myChart.addData([ [ 0, // 系列索引 { value:Math.round(Math.random() * 1000), // 新增資料 }, true, // 新增資料是否從佇列頭部插入 false // 是否增加佇列長度,false則自定刪除原有資料,隊頭插入刪隊尾,隊尾插入刪隊頭 ], ]); }, 2100); } ); </script>
(2)在我寫的VUE中替換ECharts2的addData的方法可以參考以下寫法(我們假設將資料控制在200條以內):
if( arr.length == 200 ){ arr.shift(); } arr.push('data')