Echarts 動態展示圖標


效果展示:

 

 

上圖中每隔兩秒鍾動態加載一次數據,詳細設置代碼如下:

  1    <script type="text/javascript">
  2     var dom = document.getElementById("container");
  3     var myChart = echarts.init(dom);
  4     option = {
  5         title: {
  6             text: '動態數據',
  7             subtext: '純屬虛構'
  8         },
  9         tooltip: {
 10             trigger: 'axis',
 11             axisPointer: {
 12                 type: 'cross',
 13                 label: {
 14                     backgroundColor: '#283b56'
 15                 }
 16             }
 17         },
 18         legend: {
 19             data: ['最新成交價', '預購隊列']
 20         },
 21         toolbox: {
 22             show: true,
 23             feature: {
 24                 dataView: { readOnly: false },
 25                 restore: {},
 26                 saveAsImage: {}
 27             }
 28         },
 29         dataZoom: {
 30             show: false,
 31             start: 0,
 32             end: 100
 33         },
 34         xAxis: [
 35             {
 36                 type: 'category',
 37                 boundaryGap: true,
 38                 data: (function () {
 39                     var now = new Date();
 40                     var res = [];
 41                     var len = 10;
 42                     while (len--) {
 43                         res.unshift(now.toLocaleTimeString().replace(/^\D*/, ''));
 44                         now = new Date(now - 2000);
 45                     }
 46                     return res;
 47                 })()
 48             },
 49             {
 50                 type: 'category',
 51                 boundaryGap: true,
 52                 data: (function () {
 53                     var res = [];
 54                     var len = 10;
 55                     while (len--) {
 56                         res.push(10 - len - 1);
 57                     }
 58                     return res;
 59                 })()
 60             }
 61         ],
 62         yAxis: [
 63             {
 64                 type: 'value',
 65                 scale: true,
 66                 name: '價格',
 67                 max: 30,
 68                 min: 0,
 69                 boundaryGap: [0.2, 0.2]
 70             },
 71             {
 72                 type: 'value',
 73                 scale: true,
 74                 name: '預購量',
 75                 max: 1200,
 76                 min: 0,
 77                 boundaryGap: [0.2, 0.2]
 78             }
 79         ],
 80         series: [
 81             {
 82                 name: '預購隊列',
 83                 type: 'bar',
 84                 xAxisIndex: 1,
 85                 yAxisIndex: 1,
 86                 data: (function () {
 87                     var res = [];
 88                     var len = 10;
 89                     while (len--) {
 90                         res.push(Math.round(Math.random() * 1000));
 91                     }
 92                     return res;
 93                 })()
 94             },
 95             {
 96                 name: '最新成交價',
 97                 type: 'line',
 98                 data: (function () {
 99                     var res = [];
100                     var len = 0;
101                     while (len < 10) {
102                         res.push((Math.random() * 10 + 5).toFixed(1) - 0);
103                         len++;
104                     }
105                     return res;
106                 })()
107             }
108         ]
109     };
110 
111     var count = 11;
112     setInterval(function () {
113         var axisData = (new Date()).toLocaleTimeString().replace(/^\D*/, '');
114 
115         var data0 = option.series[0].data;
116         var data1 = option.series[1].data;
117         data0.shift();
118         data0.push(Math.round(Math.random() * 1000));
119         data1.shift();
120         data1.push((Math.random() * 10 + 5).toFixed(1) - 0);
121 
122         option.xAxis[0].data.shift();
123         option.xAxis[0].data.push(axisData);
124         option.xAxis[1].data.shift();
125         option.xAxis[1].data.push(count++);
126 
127         myChart.setOption(option);
128     }, 2100);
129 
130    
131     </script>

使用 setInterval(function () { show() }, 2100); 函數定時兩秒鍾執行一次show()方法,x軸數據由 var axisData = (new Date()).toLocaleTimeString().replace(/^\D*/, '');獲取到最新的時間  

var data0 = option.series[0].data;
var data1 = option.series[1].data;
這兩行代碼獲取取到現在圖表中的所有數值,用
data0.shift();刪除掉數組中第一個元素,使用data0.push(Math.round(Math.random() * 1000));向數組末尾添加一個隨機的數值
兩組數據以相同的方式刪除第一條數據再向末尾添加一條數據

上下兩個X軸的數據也是以相同的方式刪除第一條末尾添加一條的方式處理數據
最后用myChart.setOption(option);加載數據。

整體思路還是比較簡單的,至於圖標的各個屬性設置可以查看:https://www.cnblogs.com/xiong950413/p/13322440.html

 

 

Echart更多圖標請查閱:https://echarts.apache.org/examples/zh/editor.html?c=dynamic-data


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM