|  |  | 
|  | <!-- | 
|  | 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> |