|  | <!DOCTYPE html> | 
|  | <!-- | 
|  | 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"> | 
|  | <meta name="viewport" content="width=device-width, initial-scale=1" /> | 
|  | <script src="https://unpkg.com/d3-array@3"></script> | 
|  | <script src="https://unpkg.com/d3-geo@3/dist/d3-geo.js"></script> | 
|  |  | 
|  | <script src="lib/simpleRequire.js"></script> | 
|  | <script src="lib/config.js"></script> | 
|  | <script src="lib/jquery.min.js"></script> | 
|  | <script src="lib/facePrint.js"></script> | 
|  | <script src="lib/testHelper.js"></script> | 
|  |  | 
|  | <!-- <script src="ut/lib/canteen.js"></script> --> | 
|  | <link rel="stylesheet" href="lib/reset.css" /> | 
|  | </head> | 
|  | <body> | 
|  | <style> | 
|  | body { | 
|  | background: #eee; | 
|  | margin: 0; | 
|  | text-align: center; | 
|  | } | 
|  | #main { | 
|  | box-sizing: border-box; | 
|  | margin: 0 auto; | 
|  | width: 800px; | 
|  | max-width: 100%; | 
|  | text-align: center; | 
|  | } | 
|  | .chart { | 
|  | height: 400px; | 
|  | border-radius: 5px; | 
|  | margin: 20px 0; | 
|  | box-shadow: 0 0 20px rgba(0, 0, 0, 0.1); | 
|  | background: #fff; | 
|  | } | 
|  | .dg.ac { | 
|  | text-align: left; | 
|  | } | 
|  | </style> | 
|  |  | 
|  |  | 
|  |  | 
|  | <div id="main"> | 
|  | <h1>Tests for map projections from D3</h1> | 
|  | </div> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require([ | 
|  | 'echarts', | 
|  | './data/map/json/world.json', | 
|  | './data/usa.json' | 
|  | ], function (echarts, worldJson, usaJson) { | 
|  |  | 
|  | var option; | 
|  |  | 
|  |  | 
|  | function createLineString(start, end) { | 
|  | const dx = end[0] - start[0]; | 
|  | const dy = end[1] - start[1]; | 
|  | const segs = 100; | 
|  | const stepX = dx / segs; | 
|  | const stepY = dy / segs; | 
|  | const points = []; | 
|  | // TODO needs adaptive sampling on the -180 / 180 of azimuthal projections. | 
|  | for (let i = 0; i <= segs; i++) { | 
|  | points.push([ | 
|  | start[0] + i * stepX, | 
|  | start[1] + i * stepY | 
|  | ]); | 
|  | } | 
|  | return points; | 
|  | } | 
|  | function normalizePoint(pt) { | 
|  | if (pt[0] === -180) { | 
|  | pt[0] += 1e-2; | 
|  | } | 
|  | if (pt[0] === 180) { | 
|  | pt[0] -= 1e-2; | 
|  | } | 
|  | if (pt[1] === -80) { | 
|  | pt[1] += 1e-2; | 
|  | } | 
|  | if (pt[1] === 80) { | 
|  | pt[1] -= 1e-2; | 
|  | } | 
|  | return pt; | 
|  | } | 
|  | // Add graticule | 
|  | var graticuleLineStrings = []; | 
|  | for (var lat = -80; lat <= 80; lat += 10) { | 
|  | graticuleLineStrings.push( | 
|  | createLineString(normalizePoint([-180, lat]), normalizePoint([180, lat])) | 
|  | ); | 
|  | } | 
|  | for (var lng = -180; lng <= 180; lng += 10) { | 
|  | graticuleLineStrings.push( | 
|  | createLineString(normalizePoint([lng, -80]), normalizePoint([lng, 80])) | 
|  | ); | 
|  | } | 
|  |  | 
|  | // const graticules = d3.geoGraticule().lines(); | 
|  | // console.log(graticules.map(geo => geo.coordinates)) | 
|  |  | 
|  | worldJson.features.unshift({ | 
|  | geometry: { | 
|  | type: 'MultiLineString', | 
|  | coordinates: graticuleLineStrings | 
|  | }, | 
|  | properties: { | 
|  | name: 'graticule' | 
|  | } | 
|  | }); | 
|  |  | 
|  |  | 
|  | echarts.registerMap('world', worldJson); | 
|  | echarts.registerMap('USA', usaJson); | 
|  |  | 
|  | function createUSAOption(name, projection) { | 
|  | return { | 
|  | title: { | 
|  | text: name, | 
|  | }, | 
|  | tooltip: { | 
|  | trigger: 'item', | 
|  | showDelay: 0, | 
|  | transitionDuration: 0.2, | 
|  | formatter: function (params) { | 
|  | var value = (params.value + '').split('.'); | 
|  | value = value[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, '$1,'); | 
|  | return params.seriesName + '<br/>' + params.name + ': ' + value; | 
|  | } | 
|  | }, | 
|  | visualMap: { | 
|  | left: 'right', | 
|  | min: 500000, | 
|  | max: 38000000, | 
|  | inRange: { | 
|  | color: ['#313695', '#4575b4', '#74add1', '#abd9e9', '#e0f3f8', '#ffffbf', '#fee090', '#fdae61', '#f46d43', '#d73027', '#a50026'] | 
|  | }, | 
|  | text: ['High', 'Low'],           // 文本,默认为数值文本 | 
|  | calculable: true | 
|  | }, | 
|  | toolbox: { | 
|  | show: true, | 
|  | //orient: 'vertical', | 
|  | left: 'left', | 
|  | top: 'top', | 
|  | feature: { | 
|  | dataView: {readOnly: false}, | 
|  | restore: {}, | 
|  | saveAsImage: {} | 
|  | } | 
|  | }, | 
|  | series : [ | 
|  | { | 
|  | name: 'USA PopEstimates', | 
|  | type: 'map', | 
|  | roam: true, | 
|  | map: 'USA', | 
|  | emphasis: { | 
|  | label: { | 
|  | show: true | 
|  | } | 
|  | }, | 
|  | // 文本位置修正 | 
|  | textFixed: { | 
|  | Alaska: [20, -20] | 
|  | }, | 
|  | projection, | 
|  | data:[ | 
|  | {name: 'Alabama', value: 4822023}, | 
|  | {name: 'Alaska', value: 731449}, | 
|  | {name: 'Arizona', value: 6553255}, | 
|  | {name: 'Arkansas', value: 2949131}, | 
|  | {name: 'California', value: 38041430}, | 
|  | {name: 'Colorado', value: 5187582}, | 
|  | {name: 'Connecticut', value: 3590347}, | 
|  | {name: 'Delaware', value: 917092}, | 
|  | {name: 'District of Columbia', value: 632323}, | 
|  | {name: 'Florida', value: 19317568}, | 
|  | {name: 'Georgia', value: 9919945}, | 
|  | {name: 'Hawaii', value: 1392313}, | 
|  | {name: 'Idaho', value: 1595728}, | 
|  | {name: 'Illinois', value: 12875255}, | 
|  | {name: 'Indiana', value: 6537334}, | 
|  | {name: 'Iowa', value: 3074186}, | 
|  | {name: 'Kansas', value: 2885905}, | 
|  | {name: 'Kentucky', value: 4380415}, | 
|  | {name: 'Louisiana', value: 4601893}, | 
|  | {name: 'Maine', value: 1329192}, | 
|  | {name: 'Maryland', value: 5884563}, | 
|  | {name: 'Massachusetts', value: 6646144}, | 
|  | {name: 'Michigan', value: 9883360}, | 
|  | {name: 'Minnesota', value: 5379139}, | 
|  | {name: 'Mississippi', value: 2984926}, | 
|  | {name: 'Missouri', value: 6021988}, | 
|  | {name: 'Montana', value: 1005141}, | 
|  | {name: 'Nebraska', value: 1855525}, | 
|  | {name: 'Nevada', value: 2758931}, | 
|  | {name: 'New Hampshire', value: 1320718}, | 
|  | {name: 'New Jersey', value: 8864590}, | 
|  | {name: 'New Mexico', value: 2085538}, | 
|  | {name: 'New York', value: 19570261}, | 
|  | {name: 'North Carolina', value: 9752073}, | 
|  | {name: 'North Dakota', value: 699628}, | 
|  | {name: 'Ohio', value: 11544225}, | 
|  | {name: 'Oklahoma', value: 3814820}, | 
|  | {name: 'Oregon', value: 3899353}, | 
|  | {name: 'Pennsylvania', value: 12763536}, | 
|  | {name: 'Rhode Island', value: 1050292}, | 
|  | {name: 'South Carolina', value: 4723723}, | 
|  | {name: 'South Dakota', value: 833354}, | 
|  | {name: 'Tennessee', value: 6456243}, | 
|  | {name: 'Texas', value: 26059203}, | 
|  | {name: 'Utah', value: 2855287}, | 
|  | {name: 'Vermont', value: 626011}, | 
|  | {name: 'Virginia', value: 8185867}, | 
|  | {name: 'Washington', value: 6897012}, | 
|  | {name: 'West Virginia', value: 1855413}, | 
|  | {name: 'Wisconsin', value: 5726398}, | 
|  | {name: 'Wyoming', value: 576412}, | 
|  | {name: 'Puerto Rico', value: 3667084} | 
|  | ] | 
|  | } | 
|  | ] | 
|  | } | 
|  | } | 
|  |  | 
|  | function createWorldOption(name, projection) { | 
|  | return { | 
|  | visualMap: { | 
|  | min: 0, | 
|  | max: 1000000, | 
|  | text:['High','Low'], | 
|  | realtime: true, | 
|  | calculable : true, | 
|  | color: ['orangered','yellow','lightskyblue'] | 
|  | }, | 
|  | series : [ | 
|  | { | 
|  | name: 'World Population (2010)', | 
|  | type: 'map', | 
|  | map: 'world', | 
|  | roam: true, | 
|  | itemStyle: { | 
|  | borderWidth: 0.5, | 
|  | borderColor: 'black' | 
|  | }, | 
|  | projection, | 
|  | data:[ | 
|  | { | 
|  | name: 'graticule', | 
|  | itemStyle: { | 
|  | borderColor: '#ddd' | 
|  | }, | 
|  | emphasis: { | 
|  | itemStyle: { | 
|  | borderColor: '#ddd' | 
|  | } | 
|  | } | 
|  | }, | 
|  |  | 
|  | {name : 'Afghanistan', value : 28397.812}, | 
|  | {name : 'Angola', value : 19549.124}, | 
|  | {name : 'Albania', value : 3150.143}, | 
|  | {name : 'United Arab Emirates', value : 8441.537}, | 
|  | {name : 'Argentina', value : 40374.224}, | 
|  | {name : 'Armenia', value : 2963.496}, | 
|  | {name : 'French Southern and Antarctic Lands', value : 268.065}, | 
|  | {name : 'Australia', value : 22404.488}, | 
|  | {name : 'Austria', value : 8401.924}, | 
|  | {name : 'Azerbaijan', value : 9094.718}, | 
|  | {name : 'Burundi', value : 9232.753}, | 
|  | {name : 'Belgium', value : 10941.288}, | 
|  | {name : 'Benin', value : 9509.798}, | 
|  | {name : 'Burkina Faso', value : 15540.284}, | 
|  | {name : 'Bangladesh', value : 151125.475}, | 
|  | {name : 'Bulgaria', value : 7389.175}, | 
|  | {name : 'The Bahamas', value : 66402.316}, | 
|  | {name : 'Bosnia and Herzegovina', value : 3845.929}, | 
|  | {name : 'Belarus', value : 9491.07}, | 
|  | {name : 'Belize', value : 308.595}, | 
|  | {name : 'Bermuda', value : 64.951}, | 
|  | {name : 'Bolivia', value : 716.939}, | 
|  | {name : 'Brazil', value : 195210.154}, | 
|  | {name : 'Brunei', value : 27.223}, | 
|  | {name : 'Bhutan', value : 716.939}, | 
|  | {name : 'Botswana', value : 1969.341}, | 
|  | {name : 'Central African Republic', value : 4349.921}, | 
|  | {name : 'Canada', value : 34126.24}, | 
|  | {name : 'Switzerland', value : 7830.534}, | 
|  | {name : 'Chile', value : 17150.76}, | 
|  | {name : 'China', value : 1359821.465}, | 
|  | {name : 'Ivory Coast', value : 60508.978}, | 
|  | {name : 'Cameroon', value : 20624.343}, | 
|  | {name : 'Democratic Republic of the Congo', value : 62191.161}, | 
|  | {name : 'Republic of the Congo', value : 3573.024}, | 
|  | {name : 'Colombia', value : 46444.798}, | 
|  | {name : 'Costa Rica', value : 4669.685}, | 
|  | {name : 'Cuba', value : 11281.768}, | 
|  | {name : 'Northern Cyprus', value : 1.468}, | 
|  | {name : 'Cyprus', value : 1103.685}, | 
|  | {name : 'Czech Republic', value : 10553.701}, | 
|  | {name : 'Germany', value : 83017.404}, | 
|  | {name : 'Djibouti', value : 834.036}, | 
|  | {name : 'Denmark', value : 5550.959}, | 
|  | {name : 'Dominican Republic', value : 10016.797}, | 
|  | {name : 'Algeria', value : 37062.82}, | 
|  | {name : 'Ecuador', value : 15001.072}, | 
|  | {name : 'Egypt', value : 78075.705}, | 
|  | {name : 'Eritrea', value : 5741.159}, | 
|  | {name : 'Spain', value : 46182.038}, | 
|  | {name : 'Estonia', value : 1298.533}, | 
|  | {name : 'Ethiopia', value : 87095.281}, | 
|  | {name : 'Finland', value : 5367.693}, | 
|  | {name : 'Fiji', value : 860.559}, | 
|  | {name : 'Falkland Islands', value : 49.581}, | 
|  | {name : 'France', value : 63230.866}, | 
|  | {name : 'Gabon', value : 1556.222}, | 
|  | {name : 'United Kingdom', value : 62066.35}, | 
|  | {name : 'Georgia', value : 4388.674}, | 
|  | {name : 'Ghana', value : 24262.901}, | 
|  | {name : 'Guinea', value : 10876.033}, | 
|  | {name : 'Gambia', value : 1680.64}, | 
|  | {name : 'Guinea Bissau', value : 10876.033}, | 
|  | {name : 'Equatorial Guinea', value : 696.167}, | 
|  | {name : 'Greece', value : 11109.999}, | 
|  | {name : 'Greenland', value : 56.546}, | 
|  | {name : 'Guatemala', value : 14341.576}, | 
|  | {name : 'French Guiana', value : 231.169}, | 
|  | {name : 'Guyana', value : 786.126}, | 
|  | {name : 'Honduras', value : 7621.204}, | 
|  | {name : 'Croatia', value : 4338.027}, | 
|  | {name : 'Haiti', value : 9896.4}, | 
|  | {name : 'Hungary', value : 10014.633}, | 
|  | {name : 'Indonesia', value : 240676.485}, | 
|  | {name : 'India', value : 1205624.648}, | 
|  | {name : 'Ireland', value : 4467.561}, | 
|  | {name : 'Iran', value : 240676.485}, | 
|  | {name : 'Iraq', value : 30962.38}, | 
|  | {name : 'Iceland', value : 318.042}, | 
|  | {name : 'Israel', value : 7420.368}, | 
|  | {name : 'Italy', value : 60508.978}, | 
|  | {name : 'Jamaica', value : 2741.485}, | 
|  | {name : 'Jordan', value : 6454.554}, | 
|  | {name : 'Japan', value : 127352.833}, | 
|  | {name : 'Kazakhstan', value : 15921.127}, | 
|  | {name : 'Kenya', value : 40909.194}, | 
|  | {name : 'Kyrgyzstan', value : 5334.223}, | 
|  | {name : 'Cambodia', value : 14364.931}, | 
|  | {name : 'South Korea', value : 51452.352}, | 
|  | {name : 'Kosovo', value : 97.743}, | 
|  | {name : 'Kuwait', value : 2991.58}, | 
|  | {name : 'Laos', value : 6395.713}, | 
|  | {name : 'Lebanon', value : 4341.092}, | 
|  | {name : 'Liberia', value : 3957.99}, | 
|  | {name : 'Libya', value : 6040.612}, | 
|  | {name : 'Sri Lanka', value : 20758.779}, | 
|  | {name : 'Lesotho', value : 2008.921}, | 
|  | {name : 'Lithuania', value : 3068.457}, | 
|  | {name : 'Luxembourg', value : 507.885}, | 
|  | {name : 'Latvia', value : 2090.519}, | 
|  | {name : 'Morocco', value : 31642.36}, | 
|  | {name : 'Moldova', value : 103.619}, | 
|  | {name : 'Madagascar', value : 21079.532}, | 
|  | {name : 'Mexico', value : 117886.404}, | 
|  | {name : 'Macedonia', value : 507.885}, | 
|  | {name : 'Mali', value : 13985.961}, | 
|  | {name : 'Myanmar', value : 51931.231}, | 
|  | {name : 'Montenegro', value : 620.078}, | 
|  | {name : 'Mongolia', value : 2712.738}, | 
|  | {name : 'Mozambique', value : 23967.265}, | 
|  | {name : 'Mauritania', value : 3609.42}, | 
|  | {name : 'Malawi', value : 15013.694}, | 
|  | {name : 'Malaysia', value : 28275.835}, | 
|  | {name : 'Namibia', value : 2178.967}, | 
|  | {name : 'New Caledonia', value : 246.379}, | 
|  | {name : 'Niger', value : 15893.746}, | 
|  | {name : 'Nigeria', value : 159707.78}, | 
|  | {name : 'Nicaragua', value : 5822.209}, | 
|  | {name : 'Netherlands', value : 16615.243}, | 
|  | {name : 'Norway', value : 4891.251}, | 
|  | {name : 'Nepal', value : 26846.016}, | 
|  | {name : 'New Zealand', value : 4368.136}, | 
|  | {name : 'Oman', value : 2802.768}, | 
|  | {name : 'Pakistan', value : 173149.306}, | 
|  | {name : 'Panama', value : 3678.128}, | 
|  | {name : 'Peru', value : 29262.83}, | 
|  | {name : 'Philippines', value : 93444.322}, | 
|  | {name : 'Papua New Guinea', value : 6858.945}, | 
|  | {name : 'Poland', value : 38198.754}, | 
|  | {name : 'Puerto Rico', value : 3709.671}, | 
|  | {name : 'North Korea', value : 1.468}, | 
|  | {name : 'Portugal', value : 10589.792}, | 
|  | {name : 'Paraguay', value : 6459.721}, | 
|  | {name : 'Qatar', value : 1749.713}, | 
|  | {name : 'Romania', value : 21861.476}, | 
|  | {name : 'Russia', value : 21861.476}, | 
|  | {name : 'Rwanda', value : 10836.732}, | 
|  | {name : 'Western Sahara', value : 514.648}, | 
|  | {name : 'Saudi Arabia', value : 27258.387}, | 
|  | {name : 'Sudan', value : 35652.002}, | 
|  | {name : 'South Sudan', value : 9940.929}, | 
|  | {name : 'Senegal', value : 12950.564}, | 
|  | {name : 'Solomon Islands', value : 526.447}, | 
|  | {name : 'Sierra Leone', value : 5751.976}, | 
|  | {name : 'El Salvador', value : 6218.195}, | 
|  | {name : 'Somaliland', value : 9636.173}, | 
|  | {name : 'Somalia', value : 9636.173}, | 
|  | {name : 'Republic of Serbia', value : 3573.024}, | 
|  | {name : 'Suriname', value : 524.96}, | 
|  | {name : 'Slovakia', value : 5433.437}, | 
|  | {name : 'Slovenia', value : 2054.232}, | 
|  | {name : 'Sweden', value : 9382.297}, | 
|  | {name : 'Swaziland', value : 1193.148}, | 
|  | {name : 'Syria', value : 7830.534}, | 
|  | {name : 'Chad', value : 11720.781}, | 
|  | {name : 'Togo', value : 6306.014}, | 
|  | {name : 'Thailand', value : 66402.316}, | 
|  | {name : 'Tajikistan', value : 7627.326}, | 
|  | {name : 'Turkmenistan', value : 5041.995}, | 
|  | {name : 'East Timor', value : 10016.797}, | 
|  | {name : 'Trinidad and Tobago', value : 1328.095}, | 
|  | {name : 'Tunisia', value : 10631.83}, | 
|  | {name : 'Turkey', value : 72137.546}, | 
|  | {name : 'United Republic of Tanzania', value : 44973.33}, | 
|  | {name : 'Uganda', value : 33987.213}, | 
|  | {name : 'Ukraine', value : 46050.22}, | 
|  | {name : 'Uruguay', value : 3371.982}, | 
|  | {name : 'United States of America', value : 312247.116}, | 
|  | {name : 'Uzbekistan', value : 27769.27}, | 
|  | {name : 'Venezuela', value : 236.299}, | 
|  | {name : 'Vietnam', value : 89047.397}, | 
|  | {name : 'Vanuatu', value : 236.299}, | 
|  | {name : 'West Bank', value : 13.565}, | 
|  | {name : 'Yemen', value : 22763.008}, | 
|  | {name : 'South Africa', value : 51452.352}, | 
|  | {name : 'Zambia', value : 13216.985}, | 
|  | {name : 'Zimbabwe', value : 13076.978} | 
|  | ] | 
|  | } | 
|  | ] | 
|  | }; | 
|  | } | 
|  |  | 
|  | [ | 
|  | ['default'], | 
|  | // Azimuthal Projections | 
|  | ['geoAzimuthalEqualArea'], | 
|  | ['geoAzimuthalEquidistant'], | 
|  | // 'geoGnomonic', | 
|  | ['geoOrthographic'], | 
|  | ['geoStereographic', d3.geoStereographic().rotate([-27, 0])], | 
|  |  | 
|  | // Equal-Earth | 
|  | ['geoEqualEarth'], | 
|  |  | 
|  | // Conic Projections | 
|  | ['geoConicConformal'], | 
|  | ['geoConicEqualArea'], | 
|  | ['geoConicEquidistant'], | 
|  |  | 
|  | // Cylindrical Projections | 
|  | ['geoEquirectangular'], | 
|  | ['geoMercator'], | 
|  | ['geoTransverseMercator', d3.geoStereographic()], | 
|  | ['geoNaturalEarth1'], | 
|  |  | 
|  | ['geoAlbersUsa'] | 
|  | ].forEach(([projectionName, projection]) => { | 
|  | projection = projection || d3[projectionName] && d3[projectionName](); | 
|  | const dom = document.createElement('div'); | 
|  | dom.className = 'chart'; | 
|  | document.querySelector('#main').appendChild(dom); | 
|  |  | 
|  | const chart = echarts.init(dom); | 
|  | const projectionOpt = projection && { | 
|  | project: (pt) => { | 
|  | return projection(pt) | 
|  | }, | 
|  | unproject: (pt) => projection.invert(pt), | 
|  | stream: projection.stream | 
|  | }; | 
|  | const option = projectionName === 'geoAlbersUsa' | 
|  | ? createUSAOption(projectionName, projectionOpt) | 
|  | : createWorldOption(projectionName, projectionOpt); | 
|  | if (projectionName === 'geoStereographic') { | 
|  | // TODO | 
|  | option.series[0].center = projection([0, 0]); | 
|  | option.series[0].zoom = 30; | 
|  | } | 
|  | else if (projectionName === 'geoTransverseMercator') { | 
|  | option.series[0].center = projection([0, 0]); | 
|  | option.series[0].zoom = 4000; | 
|  | } | 
|  | option.title = { | 
|  | text: projectionName, | 
|  | left: 'center', | 
|  | top: 0, | 
|  | textStyle: { | 
|  | fontSize: 14 | 
|  | } | 
|  | }; | 
|  | chart.setOption(option); | 
|  | }); | 
|  |  | 
|  |  | 
|  | }); | 
|  | </script> | 
|  |  | 
|  |  | 
|  | </body> | 
|  | </html> |