|  | 
 | <!-- | 
 | 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"> | 
 |         <title>calendar</title> | 
 |         <meta name="viewport" content="width=device-width, initial-scale=1" /> | 
 |         <link rel="stylesheet" href="lib/reset.css"> | 
 |         <script src="lib/simpleRequire.js"></script> | 
 |         <script src="lib/config.js"></script> | 
 |         <script src="lib/jquery.min.js"></script> | 
 |     </head> | 
 |     <body> | 
 |         <style> | 
 |             html, body, #main { | 
 |                 width: 100%; | 
 |                 height: 100%; | 
 |             } | 
 |         </style> | 
 |         <div id="main"></div> | 
 |         <script> | 
 |  | 
 |  | 
 |             var getVirtulData =  function(year) { | 
 |  | 
 |                 year = year || '2017'; | 
 |  | 
 |                 var datas = []; | 
 |  | 
 |                 var arr31 = [1, 3, 5, 7, 8, 10, 12]; | 
 |                 var arr30 = [4, 6, 9, 11]; | 
 |                 for (var i = 1; i <= 31; i++) { | 
 |                     for (var j = arr31.length - 1; j >= 0; j--) { | 
 |                         datas.push([year + '-' + arr31[j] + '-' + i, Math.floor(Math.random() * 10000)]); | 
 |                     } | 
 |                 } | 
 |                 for (var i = 1; i <= 30; i++) { | 
 |                     for (var j = arr30.length - 1; j >= 0; j--) { | 
 |                         datas.push([year + '-' + arr30[j] + '-' + i, Math.floor(Math.random() * 10000)]); | 
 |                     } | 
 |                 } | 
 |                 for (var i = 1; i <= 29; i++) { | 
 |                     datas.push([year + '-2-' + i, Math.floor(Math.random() * 10000)]); | 
 |                 } | 
 |                 return datas; | 
 |             } | 
 |  | 
 |             var data = getVirtulData(2016); | 
 |             require(['echarts'], function (echarts) { | 
 |  | 
 |                 var chart = echarts.init(document.getElementById('main')); | 
 |  | 
 |                 chart.setOption({ | 
 |                     aria: { | 
 |                         show: true | 
 |                     }, | 
 |                     backgroundColor: '#404a59', | 
 |  | 
 |                     title: { | 
 |                         top: 30, | 
 |                         text: '2016年某人每天的步数', | 
 |                         subtext: '数据纯属虚构', | 
 |                         left: 'center', | 
 |                         textStyle: { | 
 |                             color: '#fff' | 
 |                         } | 
 |                     }, | 
 |                     tooltip : { | 
 |                         trigger: 'item' | 
 |                     }, | 
 |                     legend: { | 
 |                         orient: 'vertical', | 
 |                         y: '30', | 
 |                         x: '100', | 
 |                         data:['步数'], | 
 |                         textStyle: { | 
 |                             color: '#fff' | 
 |                         } | 
 |                     }, | 
 |                     calendar: { | 
 |                         top: 100, | 
 |                         left: 60, | 
 |                         range: '2016', | 
 |                         splitLine: { | 
 |                             show: true, | 
 |                             lineStyle: { | 
 |                                 color: '#000', | 
 |                                 width: 4, | 
 |                                 type: 'solid' | 
 |                             } | 
 |                         }, | 
 |                         yearLabel: { | 
 |                             textStyle: { | 
 |                                 color: '#fff' | 
 |                             } | 
 |                         }, | 
 |                         itemStyle: { | 
 |                             normal: { | 
 |                                 color: '#323c48', | 
 |                                 borderWidth: 1, | 
 |                                 borderColor: '#111' | 
 |                             } | 
 |                         } | 
 |                     }, | 
 |                     series : [ | 
 |                         { | 
 |                             name: '步数', | 
 |                             type: 'scatter', | 
 |                             coordinateSystem: 'calendar', | 
 |                             data: data, | 
 |                             cursor: 'default', | 
 |                             symbolSize: function (val) { | 
 |                                 return val[1] / 500; | 
 |                             }, | 
 |                             itemStyle: { | 
 |                                 normal: { | 
 |                                     color: '#ddb926' | 
 |                                 } | 
 |                             } | 
 |                         }, | 
 |                         { | 
 |                             name: 'Top 12', | 
 |                             type: 'effectScatter', | 
 |                             coordinateSystem: 'calendar', | 
 |                             cursor: 'default', | 
 |                             data: data.sort(function (a, b) { | 
 |                                 return b[1] - a[1]; | 
 |                             }).slice(0, 12), | 
 |                             symbolSize: function (val) { | 
 |                                 return val[1] / 500; | 
 |                             }, | 
 |                             showEffectOn: 'render', | 
 |                             rippleEffect: { | 
 |                                 brushType: 'stroke' | 
 |                             }, | 
 |                             hoverAnimation: true, | 
 |                             itemStyle: { | 
 |                                 normal: { | 
 |                                     color: '#f4e925', | 
 |                                     shadowBlur: 10, | 
 |                                     shadowColor: '#333' | 
 |                                 } | 
 |                             }, | 
 |                             zlevel: 1 | 
 |                         } | 
 |                     ] | 
 |                 }); | 
 |  | 
 |                 $(window).resize(function() { | 
 |                     chart.resize(); | 
 |                 }); | 
 |             }); | 
 |  | 
 |         </script> | 
 |     </body> | 
 | </html> |