|  | 
 | <!-- | 
 | Licensed to the Apache Software Foundation (ASF) under one | 
 | or more contributor license agreements.  See the NOTICE file | 
 | distributed with this work for additional information | 
 | regarding copyright ownership.  The ASF licenses this file | 
 | to you under the Apache License, Version 2.0 (the | 
 | "License"); you may not use this file except in compliance | 
 | with the License.  You may obtain a copy of the License at | 
 |  | 
 |    http://www.apache.org/licenses/LICENSE-2.0 | 
 |  | 
 | Unless required by applicable law or agreed to in writing, | 
 | software distributed under the License is distributed on an | 
 | "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
 | KIND, either express or implied.  See the License for the | 
 | specific language governing permissions and limitations | 
 | under the License. | 
 | --> | 
 |  | 
 | <html> | 
 |     <head> | 
 |         <meta charset="utf-8"> | 
 |         <script src="lib/simpleRequire.js"></script> | 
 |         <script src="lib/config.js"></script> | 
 |         <link rel="stylesheet" href="lib/reset.css"> | 
 |     </head> | 
 |     <body> | 
 |         <style> | 
 |         </style> | 
 |         <div id="main"></div> | 
 |  | 
 |         <script> | 
 |  | 
 |             // Schema: | 
 |             // date,AQIindex,PM2.5,PM10,CO,NO2,SO2 | 
 |             var schema = [ | 
 |                 {name: 'date', index: 0, text: '日期'}, | 
 |                 {name: 'AQIindex', index: 1, text: 'AQI指数'}, | 
 |                 {name: 'PM25', index: 2, text: 'PM2.5'}, | 
 |                 {name: 'PM10', index: 3, text: 'PM10'}, | 
 |                 {name: 'CO', index: 4, text: '一氧化碳 (CO)'}, | 
 |                 {name: 'NO2', index: 5, text: '二氧化氮 (NO2)'}, | 
 |                 {name: 'SO2', index: 6, text: '二氧化硫 (SO2)'} | 
 |             ]; | 
 |  | 
 |             require([ | 
 |                 'data/aqi/BJdata', | 
 |                 'data/aqi/GZdata', | 
 |                 'data/aqi/SHdata', | 
 |                 'echarts' | 
 |             ], function (dataBJ, dataGZ, dataSH, echarts) { | 
 |  | 
 |                 var chart = echarts.init(document.getElementById('main')); | 
 |  | 
 |                 var dimSize = 6; | 
 |                 var nameList = ['北京', '广州', '上海']; | 
 |  | 
 |                 var color = ['#5793f3', '#d14a61', '#fd9c35']; | 
 |  | 
 |                 function update(isLazy) { | 
 |                     var idx = 0; | 
 |                     var axisPointerLinkList = []; | 
 |                     var axisPointerLinkMap = {}; | 
 |                     for (var i = 1; i < dimSize; i++) { | 
 |                         for (var j = 1; j < dimSize; j++) { | 
 |                             var id = i + '-' + j; | 
 |  | 
 |                             var linkItem = axisPointerLinkMap['x' + i]; | 
 |                             if (!linkItem) { | 
 |                                 linkItem = axisPointerLinkMap['x' + i] = {xAxisId: []}; | 
 |                                 axisPointerLinkList.push(linkItem); | 
 |                             } | 
 |                             linkItem.xAxisId.push(id); | 
 |  | 
 |                             var linkItem = axisPointerLinkMap['y' + j]; | 
 |                             if (!linkItem) { | 
 |                                 linkItem = axisPointerLinkMap['y' + j] = {yAxisId: []}; | 
 |                                 axisPointerLinkList.push(linkItem); | 
 |                             } | 
 |                             linkItem.yAxisId.push(id); | 
 |  | 
 |                             chart.setOption({ | 
 |                                 tooltip: { | 
 |                                     trigger: 'none' | 
 |                                 }, | 
 |                                 axisPointer: { | 
 |                                     show: true, | 
 |                                     snap: true, | 
 |                                     lineStyle: { | 
 |                                         type: 'dashed' | 
 |                                     }, | 
 |                                     link: axisPointerLinkList | 
 |                                 }, | 
 |                                 grid: [{ | 
 |                                     id: id, | 
 |                                     left: ((i - 1) / dimSize * 100 + 7) + '%', | 
 |                                     top: ((j - 1) / dimSize * 100 + 7) + '%', | 
 |                                     width: '15%', | 
 |                                     height: '15%' | 
 |                                 }], | 
 |                                 xAxis: [{ | 
 |                                     id: id, | 
 |                                     gridId: id, | 
 |                                     // gridIndex: idx, | 
 |                                     axisLabel: { | 
 |                                         show: j === dimSize - 1 | 
 |                                     }, | 
 |                                     axisTick: { | 
 |                                         show: j === dimSize - 1 | 
 |                                     }, | 
 |                                     name: j === dimSize - 1 ? schema[i].text : '', | 
 |                                     nameLocation: 'middle', | 
 |                                     nameGap: 30, | 
 |                                     splitNumber: 3 | 
 |                                 }], | 
 |                                 yAxis: [{ | 
 |                                     id: id, | 
 |                                     gridId: id, | 
 |                                     // gridIndex: idx, | 
 |                                     axisLabel: { | 
 |                                         show: i === 1 | 
 |                                     }, | 
 |                                     axisTick: { | 
 |                                         show: i === 1 | 
 |                                     }, | 
 |                                     name: i === 1 ? schema[j].text : '', | 
 |                                     nameLocation: 'middle', | 
 |                                     nameGap: 30, | 
 |                                     splitNumber: 4 | 
 |                                 }], | 
 |                                 series: [dataBJ, dataGZ, dataSH].map(function (data, dataIdx) { | 
 |                                     return { | 
 |                                         id: id + '-' + dataIdx, | 
 |                                         hoverAnimation: false, | 
 |                                         name: nameList[dataIdx], | 
 |                                         type: 'scatter', | 
 |                                         xAxisId: id, | 
 |                                         yAxisId: id, | 
 |                                         // xAxisIndex: idx, | 
 |                                         // yAxisIndex: idx, | 
 |                                         data: data.map(function (item) { | 
 |                                             return [item[i], item[j]]; | 
 |                                         }), | 
 |                                         itemStyle: { | 
 |                                             normal: { | 
 |                                                 color: color[dataIdx] | 
 |                                             } | 
 |                                         } | 
 |                                     }; | 
 |                                 }) | 
 |                             }, false, isLazy); | 
 |  | 
 |                             idx++; | 
 |                         } | 
 |                     } | 
 |                 } | 
 |  | 
 |                 // console.time('update immediate'); | 
 |                 // update(false); | 
 |                 // console.timeEnd('update immediate'); | 
 |  | 
 |                 // chart.clear(); | 
 |  | 
 |                 setTimeout(function () { | 
 |                     console.time('update lazy'); | 
 |                     update(true); | 
 |                     console.timeEnd('update lazy'); | 
 |                 }, 200); | 
 |             }); | 
 |  | 
 |         </script> | 
 |     </body> | 
 | </html> |