|  | <!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="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> | 
|  | </style> | 
|  |  | 
|  |  | 
|  |  | 
|  | <div id="main0"></div> | 
|  | <div id="main1"></div> | 
|  | <div id="main2"></div> | 
|  | <div id="main3"></div> | 
|  |  | 
|  |  | 
|  | <script> | 
|  | window.ANIMATION_DURATION_UPDATE = 1000; | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  | <script> | 
|  | require([ | 
|  | 'echarts', | 
|  | // 'map/js/china', | 
|  | // './data/nutrients.json' | 
|  | ], function (echarts) { | 
|  | var option; | 
|  |  | 
|  | option = { | 
|  | xAxis: { | 
|  | data: ['Animals', 'Fruits', 'Cars'] | 
|  | }, | 
|  | yAxis: {}, | 
|  | animationDurationUpdate: ANIMATION_DURATION_UPDATE, | 
|  | series: { | 
|  | dataGroupId: '', | 
|  | type: 'bar', | 
|  | id: 'main', | 
|  | data: [{ | 
|  | value: 5, | 
|  | groupId: 'animals' | 
|  | }, { | 
|  | value: 2, | 
|  | groupId: 'fruits' | 
|  | }, { | 
|  | value: 4, | 
|  | groupId: 'cars' | 
|  | }], | 
|  | universalTransition: { | 
|  | enabled: true | 
|  | } | 
|  | } | 
|  | }; | 
|  |  | 
|  | const drilldownData = [{ | 
|  | dataGroupId: 'animals', | 
|  | data: [ | 
|  | ['Cats', 4], | 
|  | ['Dogs', 2], | 
|  | ['Cows', 1], | 
|  | ['Sheep', 2], | 
|  | ['Pigs', 1] | 
|  | ] | 
|  | }, { | 
|  | dataGroupId: 'fruits', | 
|  | data: [ | 
|  | ['Apples', 4], | 
|  | ['Oranges', 2] | 
|  | ] | 
|  | }, { | 
|  | dataGroupId: 'cars', | 
|  | data: [ | 
|  | ['Toyota', 4], | 
|  | ['Opel', 2], | 
|  | ['Volkswagen', 2] | 
|  | ] | 
|  | }]; | 
|  |  | 
|  | var chart = testHelper.create(echarts, 'main0', { | 
|  | title: [ | 
|  | 'Drilldown of bar chart.' | 
|  | ], | 
|  | recordVideo: true, | 
|  | option: option | 
|  | // height: 300, | 
|  | // buttons: [{text: 'btn-txt', onclick: function () {}}], | 
|  | }); | 
|  |  | 
|  | chart.on('click', function (event) { | 
|  | if (event.data) { | 
|  | const subData = drilldownData.find(data => { | 
|  | return data.dataGroupId === event.data.groupId; | 
|  | }); | 
|  | if (!subData) { | 
|  | return; | 
|  | } | 
|  | chart.setOption({ | 
|  | xAxis: { | 
|  | data: subData.data.map(item => item[0]) | 
|  | }, | 
|  | yAxis: {}, | 
|  | animationDurationUpdate: ANIMATION_DURATION_UPDATE, | 
|  | series: { | 
|  | type: 'bar', | 
|  | id: 'main', | 
|  | dataGroupId: subData.dataGroupId, | 
|  | data: subData.data.map(item => item[1]), | 
|  | universalTransition: { | 
|  | enabled: true | 
|  | } | 
|  | }, | 
|  | graphic: [{ | 
|  | type: 'text', | 
|  | left: 50, | 
|  | top: 20, | 
|  | style: { | 
|  | text: 'Back', | 
|  | fontSize: 18 | 
|  | }, | 
|  | onclick() { | 
|  | chart.setOption(option, { | 
|  | replaceMerge: ['xAxis', 'yAxis'] | 
|  | }); | 
|  | } | 
|  | }] | 
|  | }, { | 
|  | replaceMerge: ['xAxis', 'yAxis'] | 
|  | }); | 
|  | } | 
|  | }); | 
|  | }); | 
|  | </script> | 
|  |  | 
|  | <script> | 
|  |  | 
|  | require([ | 
|  | 'echarts', 'ecStat', 'ecSimpleTransform' | 
|  | ], function (echarts, ecStat, ecSimpleTransform) { | 
|  |  | 
|  | echarts.registerTransform(ecSimpleTransform.aggregate); | 
|  | echarts.registerTransform(ecStat.transform.clustering); | 
|  | echarts.registerTransform(ecSimpleTransform.id); | 
|  |  | 
|  | const RAW_DATA = [[1425139200000,34,0.13,2,"MD","ZD","P0"],[1425225600000,28,0.71,1.5,"MB","ZD","P1"],[1425312000000,23,0.9,2.8,"MA","ZC","P2"],[1425398400000,21,0.58,6,"MB","ZC","P3"],[1425484800000,14,0.1,1.6,"MC","ZA","P4"],[1425571200000,21,0.6,7.7,"MC","ZA","P5"],[1425657600000,23,0.31,2.6,"MC","ZC","P6"],[1425744000000,34,0.74,2.4,"MD","ZE","P7"],[1425830400000,14,0.59,2.3,"MB","ZD","P8"],[1425916800000,18,0.85,5.1,"MB","ZB","P9"],[1426003200000,36,0.96,1.2,"MC","ZC","P10"],[1426089600000,18,0.28,2.5,"MA","ZC","P11"],[1426176000000,20,0.62,6,"MB","ZD","P12"],[1426262400000,32,0.79,1.7,"MB","ZA","P13"],[1426348800000,17,0.58,4.4,"MD","ZB","P14"],[1426435200000,23,0.77,3,"MB","ZA","P15"],[1426521600000,39,0.87,4.6,"MC","ZA","P16"],[1426608000000,15,0.7,6,"MB","ZC","P17"],[1426694400000,21,0.94,2.7,"MB","ZD","P18"],[1426780800000,28,0.48,4.5,"MC","ZC","P19"],[1426867200000,31,0.49,9.8,"MA","ZC","P20"],[1426953600000,27,0.87,7.7,"MB","ZB","P21"],[1427040000000,27,0.82,5.5,"MC","ZB","P22"],[1427126400000,11,0.53,2.7,"MD","ZC","P23"],[1427212800000,13,0.7,7.6,"MB","ZD","P24"],[1427299200000,39,0.99,4.8,"MB","ZD","P25"],[1427385600000,32,0.91,2.1,"MB","ZE","P26"],[1427472000000,20,0.97,5,"MB","ZA","P27"],[1427558400000,36,0.01,8.9,"MB","ZD","P28"],[1427644800000,22,0.08,9.2,"MB","ZE","P29"],[1427731200000,21,0.36,3.1,"MD","ZC","P30"],[1427817600000,11,0.15,5.8,"MD","ZB","P31"],[1427904000000,39,0.02,1.4,"MC","ZD","P32"],[1427990400000,20,0.86,8.7,"MB","ZD","P33"],[1428076800000,23,0.24,7.2,"MD","ZB","P34"],[1428163200000,12,0.06,2,"MD","ZB","P35"],[1428249600000,36,0.42,8.2,"MA","ZB","P36"],[1428336000000,17,0.48,7.5,"MB","ZC","P37"],[1428422400000,19,0.12,6.6,"MB","ZB","P38"],[1428508800000,39,0.58,3.1,"MC","ZE","P39"],[1428595200000,10,0.18,6.6,"MC","ZD","P40"],[1428681600000,22,0.28,2.1,"MB","ZE","P41"],[1428768000000,27,0.33,1.9,"MC","ZB","P42"],[1428854400000,37,0.46,9.4,"MD","ZE","P43"],[1428940800000,18,0.96,5.5,"MB","ZA","P44"],[1429027200000,11,0.61,8.2,"MD","ZC","P45"],[1429113600000,15,0.88,4.6,"MD","ZA","P46"],[1429200000000,38,0.89,7.2,"MD","ZC","P47"],[1429286400000,20,0.39,5.4,"MB","ZB","P48"],[1429372800000,30,0.71,5.5,"MA","ZA","P49"]]; | 
|  | const RAW_DATA_DIMENSIONS = ['DATE', 'COUNT', 'PRICE', 'WEIGHT', 'M_TAG', 'Z_TAG', 'ID']; | 
|  |  | 
|  |  | 
|  | const datasetOption = [{ | 
|  | id: 'raw_dataset', | 
|  | dimensions: RAW_DATA_DIMENSIONS, | 
|  | source: RAW_DATA | 
|  | }, { | 
|  | id: 'raw_clustered_dataset', | 
|  | fromDatasetId: 'raw_dataset', | 
|  | transform: { | 
|  | type: 'ecStat:clustering', | 
|  | config: { | 
|  | clusterCount: 4, | 
|  | dimensions: ['COUNT', 'PRICE'], | 
|  | outputClusterIndexDimension: { | 
|  | index: RAW_DATA_DIMENSIONS.length, | 
|  | name: 'CLUSTER_IDX' | 
|  | }, | 
|  | outputCentroidDimensions: [{ | 
|  | index: RAW_DATA_DIMENSIONS.length + 1, | 
|  | name: 'CLUSTER_CENTER_COUNT' | 
|  | }, { | 
|  | index: RAW_DATA_DIMENSIONS.length + 2, | 
|  | name: 'CLUSTER_CENTER_PRICE' | 
|  | }] | 
|  | } | 
|  | } | 
|  | }, { | 
|  | id: 'raw_cluster_centers_dataset', | 
|  | fromDatasetId: 'raw_clustered_dataset', | 
|  | transform: { | 
|  | type: 'ecSimpleTransform:aggregate', | 
|  | config: { | 
|  | resultDimensions: [ | 
|  | { from: 'COUNT', method: 'count' }, | 
|  | { from: 'CLUSTER_CENTER_COUNT', method: 'first' }, | 
|  | { from: 'CLUSTER_CENTER_PRICE', method: 'first' }, | 
|  | { from: 'CLUSTER_IDX' } | 
|  | ], | 
|  | groupBy: 'CLUSTER_IDX' | 
|  | } | 
|  | } | 
|  | }]; | 
|  |  | 
|  | const rawScatterOption = { | 
|  | dataset: datasetOption, | 
|  | xAxis: { | 
|  | name: 'PRICE' | 
|  | }, | 
|  | yAxis: { | 
|  | name: 'COUNT' | 
|  | }, | 
|  | animationDurationUpdate: ANIMATION_DURATION_UPDATE, | 
|  | series: { | 
|  | type: 'scatter', | 
|  | id: 'main', | 
|  | datasetId: 'raw_clustered_dataset', | 
|  | symbolSize: 20, | 
|  | encode: { | 
|  | itemName: 'ID', | 
|  | x: 'PRICE', | 
|  | y: 'COUNT', | 
|  | itemGroupId: 'CLUSTER_IDX', | 
|  | tooltip: ['PRICE', 'COUNT', 'WEIGHT'] | 
|  | }, | 
|  | universalTransition: { | 
|  | enabled: true | 
|  | } | 
|  | } | 
|  | }; | 
|  |  | 
|  | const clusteredScatterOption = { | 
|  | dataset: datasetOption, | 
|  | xAxis: { | 
|  | name: 'PRICE' | 
|  | }, | 
|  | yAxis: { | 
|  | name: 'COUNT' | 
|  | }, | 
|  | animationDurationUpdate: ANIMATION_DURATION_UPDATE, | 
|  | series: { | 
|  | type: 'scatter', | 
|  | id: 'main', | 
|  | datasetId: 'raw_cluster_centers_dataset', | 
|  | symbolSize: 50, | 
|  | encode: { | 
|  | x: 'CLUSTER_CENTER_PRICE', | 
|  | y: 'CLUSTER_CENTER_COUNT', | 
|  | itemGroupId: 'CLUSTER_IDX', | 
|  | tooltip: ['CLUSTER_CENTER_PRICE', 'CLUSTER_CENTER_COUNT'] | 
|  | }, | 
|  | universalTransition: { | 
|  | enabled: true, | 
|  | divideShape: 'clone' | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | var chart = testHelper.create(echarts, 'main1', { | 
|  | title: [ | 
|  | 'Transition of cluster', | 
|  | `Use divideShape: 'clone'` | 
|  | ], | 
|  | option: rawScatterOption, | 
|  | recordVideo: true, | 
|  | // height: 300, | 
|  | buttons: [{ | 
|  | text: 'All', | 
|  | onclick: function () { | 
|  | chart.setOption(rawScatterOption); | 
|  | } | 
|  | }, { | 
|  | text: 'Clustered', | 
|  | onclick: function () { | 
|  | chart.setOption(clusteredScatterOption); | 
|  | } | 
|  | }], | 
|  | }); | 
|  | }); | 
|  | </script> | 
|  |  | 
|  | <script> | 
|  | require([ | 
|  | 'echarts' | 
|  | ], function (echarts) { | 
|  |  | 
|  | const femaleData = [[161.2, 51.6], [167.5, 59.0], [159.5, 49.2], [157.0, 63.0], [155.8, 53.6], | 
|  | [170.0, 59.0], [159.1, 47.6], [166.0, 69.8], [176.2, 66.8], [160.2, 75.2], | 
|  | [172.5, 55.2], [170.9, 54.2], [172.9, 62.5], [153.4, 42.0], [160.0, 50.0], | 
|  | [147.2, 49.8], [168.2, 49.2], [175.0, 73.2], [157.0, 47.8], [167.6, 68.8], | 
|  | [159.5, 50.6], [175.0, 82.5], [166.8, 57.2], [176.5, 87.8], [170.2, 72.8], | 
|  | [174.0, 54.5], [173.0, 59.8], [179.9, 67.3], [170.5, 67.8], [160.0, 47.0], | 
|  | [154.4, 46.2], [162.0, 55.0], [176.5, 83.0], [160.0, 54.4], [152.0, 45.8], | 
|  | [162.1, 53.6], [170.0, 73.2], [160.2, 52.1], [161.3, 67.9], [166.4, 56.6], | 
|  | [168.9, 62.3], [163.8, 58.5], [167.6, 54.5], [160.0, 50.2], [161.3, 60.3], | 
|  | [167.6, 58.3], [165.1, 56.2], [160.0, 50.2], [170.0, 72.9], [157.5, 59.8], | 
|  | [167.6, 61.0], [160.7, 69.1], [163.2, 55.9], [152.4, 46.5], [157.5, 54.3], | 
|  | [168.3, 54.8], [180.3, 60.7], [165.5, 60.0], [165.0, 62.0], [164.5, 60.3], | 
|  | [156.0, 52.7], [160.0, 74.3], [163.0, 62.0], [165.7, 73.1], [161.0, 80.0], | 
|  | [162.0, 54.7], [166.0, 53.2], [174.0, 75.7], [172.7, 61.1], [167.6, 55.7], | 
|  | [151.1, 48.7], [164.5, 52.3], [163.5, 50.0], [152.0, 59.3], [169.0, 62.5], | 
|  | [164.0, 55.7], [161.2, 54.8], [155.0, 45.9], [170.0, 70.6], [176.2, 67.2], | 
|  | [170.0, 69.4], [162.5, 58.2], [170.3, 64.8], [164.1, 71.6], [169.5, 52.8], | 
|  | [163.2, 59.8], [154.5, 49.0], [159.8, 50.0], [173.2, 69.2], [170.0, 55.9], | 
|  | [161.4, 63.4], [169.0, 58.2], [166.2, 58.6], [159.4, 45.7], [162.5, 52.2], | 
|  | [159.0, 48.6], [162.8, 57.8], [159.0, 55.6], [179.8, 66.8], [162.9, 59.4], | 
|  | [161.0, 53.6], [151.1, 73.2], [168.2, 53.4], [168.9, 69.0], [173.2, 58.4], | 
|  | [171.8, 56.2], [178.0, 70.6], [164.3, 59.8], [163.0, 72.0], [168.5, 65.2], | 
|  | [166.8, 56.6], [172.7, 105.2], [163.5, 51.8], [169.4, 63.4], [167.8, 59.0], | 
|  | [159.5, 47.6], [167.6, 63.0], [161.2, 55.2], [160.0, 45.0], [163.2, 54.0], | 
|  | [162.2, 50.2], [161.3, 60.2], [149.5, 44.8], [157.5, 58.8], [163.2, 56.4], | 
|  | [172.7, 62.0], [155.0, 49.2], [156.5, 67.2], [164.0, 53.8], [160.9, 54.4], | 
|  | [162.8, 58.0], [167.0, 59.8], [160.0, 54.8], [160.0, 43.2], [168.9, 60.5], | 
|  | [158.2, 46.4], [156.0, 64.4], [160.0, 48.8], [167.1, 62.2], [158.0, 55.5], | 
|  | [167.6, 57.8], [156.0, 54.6], [162.1, 59.2], [173.4, 52.7], [159.8, 53.2], | 
|  | [170.5, 64.5], [159.2, 51.8], [157.5, 56.0], [161.3, 63.6], [162.6, 63.2], | 
|  | [160.0, 59.5], [168.9, 56.8], [165.1, 64.1], [162.6, 50.0], [165.1, 72.3], | 
|  | [166.4, 55.0], [160.0, 55.9], [152.4, 60.4], [170.2, 69.1], [162.6, 84.5], | 
|  | [170.2, 55.9], [158.8, 55.5], [172.7, 69.5], [167.6, 76.4], [162.6, 61.4], | 
|  | [167.6, 65.9], [156.2, 58.6], [175.2, 66.8], [172.1, 56.6], [162.6, 58.6], | 
|  | [160.0, 55.9], [165.1, 59.1], [182.9, 81.8], [166.4, 70.7], [165.1, 56.8], | 
|  | [177.8, 60.0], [165.1, 58.2], [175.3, 72.7], [154.9, 54.1], [158.8, 49.1], | 
|  | [172.7, 75.9], [168.9, 55.0], [161.3, 57.3], [167.6, 55.0], [165.1, 65.5], | 
|  | [175.3, 65.5], [157.5, 48.6], [163.8, 58.6], [167.6, 63.6], [165.1, 55.2], | 
|  | [165.1, 62.7], [168.9, 56.6], [162.6, 53.9], [164.5, 63.2], [176.5, 73.6], | 
|  | [168.9, 62.0], [175.3, 63.6], [159.4, 53.2], [160.0, 53.4], [170.2, 55.0], | 
|  | [162.6, 70.5], [167.6, 54.5], [162.6, 54.5], [160.7, 55.9], [160.0, 59.0], | 
|  | [157.5, 63.6], [162.6, 54.5], [152.4, 47.3], [170.2, 67.7], [165.1, 80.9], | 
|  | [172.7, 70.5], [165.1, 60.9], [170.2, 63.6], [170.2, 54.5], [170.2, 59.1], | 
|  | [161.3, 70.5], [167.6, 52.7], [167.6, 62.7], [165.1, 86.3], [162.6, 66.4], | 
|  | [152.4, 67.3], [168.9, 63.0], [170.2, 73.6], [175.2, 62.3], [175.2, 57.7], | 
|  | [160.0, 55.4], [165.1, 104.1], [174.0, 55.5], [170.2, 77.3], [160.0, 80.5], | 
|  | [167.6, 64.5], [167.6, 72.3], [167.6, 61.4], [154.9, 58.2], [162.6, 81.8], | 
|  | [175.3, 63.6], [171.4, 53.4], [157.5, 54.5], [165.1, 53.6], [160.0, 60.0], | 
|  | [174.0, 73.6], [162.6, 61.4], [174.0, 55.5], [162.6, 63.6], [161.3, 60.9], | 
|  | [156.2, 60.0], [149.9, 46.8], [169.5, 57.3], [160.0, 64.1], [175.3, 63.6], | 
|  | [169.5, 67.3], [160.0, 75.5], [172.7, 68.2], [162.6, 61.4], [157.5, 76.8], | 
|  | [176.5, 71.8], [164.4, 55.5], [160.7, 48.6], [174.0, 66.4], [163.8, 67.3] | 
|  | ]; | 
|  | const maleDeta = [[174.0, 65.6], [175.3, 71.8], [193.5, 80.7], [186.5, 72.6], [187.2, 78.8], | 
|  | [181.5, 74.8], [184.0, 86.4], [184.5, 78.4], [175.0, 62.0], [184.0, 81.6], | 
|  | [180.0, 76.6], [177.8, 83.6], [192.0, 90.0], [176.0, 74.6], [174.0, 71.0], | 
|  | [184.0, 79.6], [192.7, 93.8], [171.5, 70.0], [173.0, 72.4], [176.0, 85.9], | 
|  | [176.0, 78.8], [180.5, 77.8], [172.7, 66.2], [176.0, 86.4], [173.5, 81.8], | 
|  | [178.0, 89.6], [180.3, 82.8], [180.3, 76.4], [164.5, 63.2], [173.0, 60.9], | 
|  | [183.5, 74.8], [175.5, 70.0], [188.0, 72.4], [189.2, 84.1], [172.8, 69.1], | 
|  | [170.0, 59.5], [182.0, 67.2], [170.0, 61.3], [177.8, 68.6], [184.2, 80.1], | 
|  | [186.7, 87.8], [171.4, 84.7], [172.7, 73.4], [175.3, 72.1], [180.3, 82.6], | 
|  | [182.9, 88.7], [188.0, 84.1], [177.2, 94.1], [172.1, 74.9], [167.0, 59.1], | 
|  | [169.5, 75.6], [174.0, 86.2], [172.7, 75.3], [182.2, 87.1], [164.1, 55.2], | 
|  | [163.0, 57.0], [171.5, 61.4], [184.2, 76.8], [174.0, 86.8], [174.0, 72.2], | 
|  | [177.0, 71.6], [186.0, 84.8], [167.0, 68.2], [171.8, 66.1], [182.0, 72.0], | 
|  | [167.0, 64.6], [177.8, 74.8], [164.5, 70.0], [192.0, 101.6], [175.5, 63.2], | 
|  | [171.2, 79.1], [181.6, 78.9], [167.4, 67.7], [181.1, 66.0], [177.0, 68.2], | 
|  | [174.5, 63.9], [177.5, 72.0], [170.5, 56.8], [182.4, 74.5], [197.1, 90.9], | 
|  | [180.1, 93.0], [175.5, 80.9], [180.6, 72.7], [184.4, 68.0], [175.5, 70.9], | 
|  | [180.6, 72.5], [177.0, 72.5], [177.1, 83.4], [181.6, 75.5], [176.5, 73.0], | 
|  | [175.0, 70.2], [174.0, 73.4], [165.1, 70.5], [177.0, 68.9], [192.0, 102.3], | 
|  | [176.5, 68.4], [169.4, 65.9], [182.1, 75.7], [179.8, 84.5], [175.3, 87.7], | 
|  | [184.9, 86.4], [177.3, 73.2], [167.4, 53.9], [178.1, 72.0], [168.9, 55.5], | 
|  | [157.2, 58.4], [180.3, 83.2], [170.2, 72.7], [177.8, 64.1], [172.7, 72.3], | 
|  | [165.1, 65.0], [186.7, 86.4], [165.1, 65.0], [174.0, 88.6], [175.3, 84.1], | 
|  | [185.4, 66.8], [177.8, 75.5], [180.3, 93.2], [180.3, 82.7], [177.8, 58.0], | 
|  | [177.8, 79.5], [177.8, 78.6], [177.8, 71.8], [177.8, 116.4], [163.8, 72.2], | 
|  | [188.0, 83.6], [198.1, 85.5], [175.3, 90.9], [166.4, 85.9], [190.5, 89.1], | 
|  | [166.4, 75.0], [177.8, 77.7], [179.7, 86.4], [172.7, 90.9], [190.5, 73.6], | 
|  | [185.4, 76.4], [168.9, 69.1], [167.6, 84.5], [175.3, 64.5], [170.2, 69.1], | 
|  | [190.5, 108.6], [177.8, 86.4], [190.5, 80.9], [177.8, 87.7], [184.2, 94.5], | 
|  | [176.5, 80.2], [177.8, 72.0], [180.3, 71.4], [171.4, 72.7], [172.7, 84.1], | 
|  | [172.7, 76.8], [177.8, 63.6], [177.8, 80.9], [182.9, 80.9], [170.2, 85.5], | 
|  | [167.6, 68.6], [175.3, 67.7], [165.1, 66.4], [185.4, 102.3], [181.6, 70.5], | 
|  | [172.7, 95.9], [190.5, 84.1], [179.1, 87.3], [175.3, 71.8], [170.2, 65.9], | 
|  | [193.0, 95.9], [171.4, 91.4], [177.8, 81.8], [177.8, 96.8], [167.6, 69.1], | 
|  | [167.6, 82.7], [180.3, 75.5], [182.9, 79.5], [176.5, 73.6], [186.7, 91.8], | 
|  | [188.0, 84.1], [188.0, 85.9], [177.8, 81.8], [174.0, 82.5], [177.8, 80.5], | 
|  | [171.4, 70.0], [185.4, 81.8], [185.4, 84.1], [188.0, 90.5], [188.0, 91.4], | 
|  | [182.9, 89.1], [176.5, 85.0], [175.3, 69.1], [175.3, 73.6], [188.0, 80.5], | 
|  | [188.0, 82.7], [175.3, 86.4], [170.5, 67.7], [179.1, 92.7], [177.8, 93.6], | 
|  | [175.3, 70.9], [182.9, 75.0], [170.8, 93.2], [188.0, 93.2], [180.3, 77.7], | 
|  | [177.8, 61.4], [185.4, 94.1], [168.9, 75.0], [185.4, 83.6], [180.3, 85.5], | 
|  | [174.0, 73.9], [167.6, 66.8], [182.9, 87.3], [160.0, 72.3], [180.3, 88.6], | 
|  | [167.6, 75.5], [186.7, 101.4], [175.3, 91.1], [175.3, 67.3], [175.9, 77.7], | 
|  | [175.3, 81.8], [179.1, 75.5], [181.6, 84.5], [177.8, 76.6], [182.9, 85.0], | 
|  | [177.8, 102.5], [184.2, 77.3], [179.1, 71.8], [176.5, 87.9], [188.0, 94.3], | 
|  | [174.0, 70.9], [167.6, 64.5], [170.2, 77.3], [167.6, 72.3], [188.0, 87.3], | 
|  | [174.0, 80.0], [176.5, 82.3], [180.3, 73.6], [167.6, 74.1], [188.0, 85.9], | 
|  | [180.3, 73.2], [167.6, 76.3], [183.0, 65.9], [183.0, 90.9], [179.1, 89.1], | 
|  | [170.2, 62.3], [177.8, 82.7], [179.1, 79.1], [190.5, 98.2], [177.8, 84.1], | 
|  | [180.3, 83.2], [180.3, 83.2] | 
|  | ]; | 
|  |  | 
|  | function calculateAverage(data, dim) { | 
|  | let total = 0; | 
|  | for (let i = 0; i < data.length; i++) { | 
|  | total += data[i][dim]; | 
|  | } | 
|  | return total /= data.length; | 
|  | } | 
|  |  | 
|  | const scatterOption = { | 
|  | xAxis: { | 
|  | scale: true | 
|  | }, | 
|  | yAxis: { | 
|  | scale: true | 
|  | }, | 
|  | series: [{ | 
|  | type: 'scatter', | 
|  | id: 'female', | 
|  | dataGroupId: 'female', | 
|  | universalTransition: { | 
|  | enabled: true, | 
|  | delay(idx, count) { | 
|  | return (idx / count) * 1000; | 
|  | } | 
|  | }, | 
|  | data: femaleData | 
|  | }, { | 
|  | type: 'scatter', | 
|  | id: 'male', | 
|  | dataGroupId: 'male', | 
|  | universalTransition: { | 
|  | enabled: true, | 
|  | delay(idx, count) { | 
|  | return (idx / count) * 1000; | 
|  | } | 
|  | }, | 
|  | data: maleDeta | 
|  | }] | 
|  | }; | 
|  |  | 
|  | const barOption = { | 
|  | xAxis: { | 
|  | type: 'category', | 
|  | data: ['Female', 'Male'] | 
|  | }, | 
|  | yAxis: {}, | 
|  | series: [{ | 
|  | type: 'bar', | 
|  | id: 'total', | 
|  | data: [{ | 
|  | value: calculateAverage(maleDeta, 0), | 
|  | groupId: 'male' | 
|  | }, { | 
|  | value: calculateAverage(femaleData, 0), | 
|  | groupId: 'female' | 
|  | }], | 
|  | universalTransition: { | 
|  | enabled: true, | 
|  | seriesKey: ['female', 'male'], | 
|  | delay(idx, count) { | 
|  | return (idx / count) * 1000; | 
|  | } | 
|  | } | 
|  | }] | 
|  | }; | 
|  |  | 
|  | calculateAverage(femaleData, 0); | 
|  | var chart = testHelper.create(echarts, 'main2', { | 
|  | title: [ | 
|  | 'Animation delay for each individuals.' | 
|  | ], | 
|  | recordVideo: true, | 
|  | option: scatterOption, | 
|  | // height: 300, | 
|  | buttons: [{ | 
|  | text: 'Scatter', | 
|  | onclick: function () { | 
|  | chart.setOption(scatterOption, true); | 
|  | } | 
|  | }, { | 
|  | text: 'Bar', | 
|  | onclick: function () { | 
|  | chart.setOption(barOption, true); | 
|  | } | 
|  | }], | 
|  | }); | 
|  | }); | 
|  | </script> | 
|  | </body> | 
|  | </html> | 
|  |  |