| <!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="data/pie-texture.js"></script> |
| <script src="lib/facePrint.js"></script> |
| <script src="lib/testHelper.js"></script> |
| <link rel="stylesheet" href="lib/reset.css" /> |
| </head> |
| <body> |
| <style> |
| .test-title { |
| background: #146402; |
| color: #fff; |
| } |
| </style> |
| |
| |
| <div id="main0"></div> |
| <div id="main1"></div> |
| <div id="main2"></div> |
| <div id="main3"></div> |
| <div id="main4"></div> |
| <div id="main5"></div> |
| <div id="main6"></div> |
| <div id="main7"></div> |
| <div id="main8"></div> |
| <div id="main9"></div> |
| <div id="main10"></div> |
| |
| |
| <script> |
| |
| require([ |
| 'echarts'/*, 'map/js/china' */ |
| ], function (echarts) { |
| |
| var value2 = 400; |
| var total = 1000; |
| |
| function getData() { |
| return [{ |
| name: '', |
| value: total - value2, |
| itemStyle: { color: 'rgb(8,90,150)' }, |
| label: { show: false } |
| }, { |
| name: '50%', |
| value: value2, |
| itemStyle: { color: 'rgb(23,235,255)'}, |
| label: { position: 'center', color: '#999', fontSize: '100' } |
| }] |
| } |
| |
| var option = { |
| animation: false, |
| series: [{ |
| type: 'pie', |
| radius: ['60%','80%'], |
| labelLine: { show: false }, |
| hoverAnimation: false, |
| data: getData() |
| }] |
| }; |
| |
| var chart = testHelper.create(echarts, 'main0', { |
| title: 'Label should be always at center of the pie', |
| option: option, |
| info: { |
| data: [{ |
| label: {position: 'center'} |
| }] |
| } |
| }); |
| |
| setInterval(function () { |
| value2 += 3; |
| if (value2 > total) { |
| value2 = 0; |
| } |
| chart.setOption({ |
| series: [{ |
| data: getData() |
| }] |
| }); |
| }, 20); |
| }); |
| |
| </script> |
| |
| |
| |
| <script> |
| |
| require([ |
| 'echarts'/*, 'map/js/china' */ |
| ], function (echarts) { |
| |
| var count = 80; |
| var data = []; |
| for (var i = 0; i < count; i++) { |
| // var label = i === 30 |
| // ? { |
| // position: 'center', |
| // fontSize: 30, |
| // color: '#fff' |
| // } |
| // : null; |
| data.push({ |
| name: i + 'Something really Random', |
| value: Math.random(), |
| // label: label |
| }); |
| } |
| |
| var option = { |
| series: [{ |
| type: 'pie', |
| radius: '50%', |
| labelLine: { |
| minTurnAngle: 110, |
| length2: 10, |
| smooth: true |
| }, |
| data: data |
| }] |
| }; |
| |
| var chart = testHelper.create(echarts, 'main1', { |
| title: 'Too many', |
| option: option |
| }); |
| }); |
| |
| |
| </script> |
| |
| |
| |
| |
| <script> |
| |
| require([ |
| 'echarts'/*, 'map/js/china' */ |
| ], function (echarts) { |
| |
| var count = 60; |
| |
| function makeData(sign) { |
| var data = []; |
| for (var i = 0; i < count; i++) { |
| var value = Math.random() * 50 * sign; |
| value = +value.toFixed(2); |
| |
| if (i >= 2 |
| && i <= count - 2 |
| && i % 10 !== 0 |
| // Test the case that the bottom label is normal to display. |
| && Math.abs(i - Math.round(count / 2)) > 2 |
| ) { |
| value = sign > 0 |
| ? value - Math.floor(value) |
| : value - Math.ceil(value); |
| value = +value.toFixed(2); |
| } |
| |
| data.push({ |
| name: value, |
| value: value |
| }); |
| } |
| return data; |
| } |
| |
| var pos = ['25%', '75%']; |
| |
| var option = { |
| title: [{ |
| text: 'Positive value\nminShowLabelAngle: 10', |
| textAlign: 'center', |
| left: pos[0] |
| }, { |
| text: 'Negative value\nminShowLabelAngle: 2', |
| textAlign: 'center', |
| left: pos[1] |
| }], |
| series: [{ |
| type: 'pie', |
| center: [pos[0], '50%'], |
| minShowLabelAngle: 10, |
| label: {show: true}, |
| radius: '30%', |
| data: makeData(1) |
| }, { |
| type: 'pie', |
| center: [pos[1], '50%'], |
| minShowLabelAngle: 2, |
| label: {show: true}, |
| radius: '30%', |
| data: makeData(-1) |
| }] |
| }; |
| |
| var chart = testHelper.create(echarts, 'main2', { |
| title: [ |
| 'minShowLabelAngle: label of small sector should **not be displayed**.', |
| 'other label should **be displayed** in appropriate place.' |
| ], |
| option: option |
| }); |
| }); |
| |
| </script> |
| |
| |
| |
| |
| |
| |
| |
| |
| <script> |
| |
| require([ |
| 'echarts'/*, 'map/js/china' */ |
| ], function (echarts) { |
| |
| var count = 5; |
| |
| function makeData(sign) { |
| var data = []; |
| for (var i = 0; i < count; i++) { |
| var value = Math.random() * 50 * sign; |
| value = +value.toFixed(2); |
| |
| if (i >= 2 |
| && i <= count - 2 |
| && i % 10 !== 0 |
| // Test the case that the bottom label is normal to display. |
| && Math.abs(i - Math.round(count / 2)) > 2 |
| ) { |
| value = sign > 0 |
| ? value - Math.floor(value) |
| : value - Math.ceil(value); |
| value = +value.toFixed(2); |
| } |
| |
| data.push({ |
| name: value, |
| value: value |
| }); |
| } |
| return data; |
| } |
| |
| var pos = ['25%', '75%']; |
| |
| var option = { |
| title: [{ |
| text: 'label.rotate: true, label should be in redical direction.', |
| textAlign: 'center', |
| left: pos[0] |
| }, { |
| text: 'label.rotate: 20', |
| textAlign: 'center', |
| left: pos[1] |
| }], |
| series: [{ |
| type: 'pie', |
| center: [pos[0], '50%'], |
| minShowLabelAngle: 10, |
| label: { |
| show: true, |
| rotate: true |
| }, |
| labelLine: { |
| length2: 0 |
| }, |
| radius: '30%', |
| data: makeData(1) |
| }, { |
| type: 'pie', |
| center: [pos[1], '50%'], |
| minShowLabelAngle: 2, |
| label: { |
| show: true, |
| rotate: 20 |
| }, |
| radius: '30%', |
| data: makeData(-1) |
| }] |
| }; |
| |
| var chart = testHelper.create(echarts, 'main3', { |
| title: [ |
| 'label should be rotated' |
| ], |
| option: option |
| }); |
| }); |
| |
| </script> |
| |
| |
| |
| |
| |
| <script> |
| require(['echarts'/*, 'map/js/china' */], function (echarts) { |
| var option; |
| |
| // Pencil sketch texture |
| var patternSrc = window.pieTexture; |
| var img = new Image(); |
| img.src = patternSrc; |
| |
| option = { |
| title: [{ |
| left: '25%', |
| top: 10, |
| text: 'Lable text should be white\n and bordered with each sector color', |
| textAlign: 'center' |
| }, { |
| left: '75%', |
| top: 10, |
| text: 'Lable text should be white\n and bordered with black', |
| textAlign: 'center' |
| }], |
| series: [{ |
| type: 'pie', |
| label: { |
| position: 'inside' |
| }, |
| center: ['25%', 150], |
| radius: [30, 60], |
| data: [{ |
| name: 'xxxxxxxxxxxx', |
| value: 100 |
| }, { |
| name: 'yyyyyyyy', |
| value: 120 |
| }, { |
| name: 'zzzzzzzz', |
| value: 110 |
| }] |
| }, { |
| type: 'funnel', |
| label: { |
| position: 'inside' |
| }, |
| top: null, |
| bottom: 30, |
| height: 100, |
| width: 50, |
| left: '25%', |
| data: [{ |
| name: 'xxxxxxxxxxxx', |
| value: 100 |
| }, { |
| name: 'yyyyyyyyyyy', |
| value: 120 |
| }, { |
| name: 'zzzzzzzzzzz', |
| value: 110 |
| }] |
| }, { |
| type: 'pie', |
| label: { |
| position: 'inside' |
| }, |
| center: ['75%', 150], |
| radius: [30, 60], |
| itemStyle: { |
| color: { |
| image: img, |
| repeat: 'repeat' |
| }, |
| borderWidth: 3, |
| borderColor: '#111' |
| }, |
| data: [{ |
| name: 'xxxxxxxxxxxx', |
| value: 100 |
| }, { |
| name: 'yyyyyyyyyyy', |
| value: 120 |
| }, { |
| name: 'zzzzzzzzzzz', |
| value: 110 |
| }] |
| }, { |
| type: 'funnel', |
| label: { |
| position: 'inside' |
| }, |
| top: null, |
| bottom: 30, |
| height: 100, |
| width: 50, |
| left: null, |
| right: '25%', |
| itemStyle: { |
| color: { |
| image: img, |
| repeat: 'repeat' |
| }, |
| borderWidth: 3, |
| borderColor: '#111' |
| }, |
| data: [{ |
| name: 'xxxxxxxxxxxx', |
| value: 100 |
| }, { |
| name: 'yyyyyyyyyyyyy', |
| value: 120 |
| }, { |
| name: 'zzzzzzzzzzzz', |
| value: 110 |
| }] |
| }] |
| }; |
| |
| var chart = testHelper.create(echarts, 'main4', { |
| title: [ |
| 'label.position: "inside". And half inside half outside.' |
| ], |
| option: option, |
| height: 400, |
| // buttons: [{text: 'btn-txt', onclick: function () {}}], |
| // recordCanvas: true, |
| }); |
| }); |
| </script> |
| |
| |
| |
| <script> |
| |
| require([ |
| 'echarts'/*, 'map/js/china' */ |
| ], function (echarts) { |
| |
| const data = [{ |
| name: 'Something really Random(1)', |
| value: 1 |
| }, { |
| name: 'Something really Random(2)', |
| value: 2 |
| }, { |
| name: 'Something really Random(3)', |
| value: 3 |
| }, { |
| name: 'Something really Random(4)', |
| value: 2 |
| }, { |
| name: 'Something really Random(5)', |
| value: 3 |
| }]; |
| |
| for (let i = 0; i < 5 ; i++) { |
| data.push({ |
| name: 'Something really Random(' + i + ')', |
| value: Math.random() * 0.1 + 0.1 |
| }); |
| } |
| |
| data.push({ |
| name: 'Something really Random', |
| value: 2 |
| }); |
| for (let i = 0; i < 5 ; i++) { |
| data.push({ |
| name: 'Something really Random(' + i + ')', |
| value: Math.random() * 0.1 + 0.1 |
| }); |
| } |
| |
| var option = { |
| series: [{ |
| type: 'pie', |
| radius: '50%', |
| data: data |
| }] |
| }; |
| |
| var chart = testHelper.create(echarts, 'main5', { |
| title: 'Layout Case 1', |
| option: option |
| }); |
| }); |
| |
| </script> |
| |
| <script> |
| require([ |
| 'echarts'/*, 'map/js/china' */ |
| ], function (echarts) { |
| |
| const data = [{ |
| "name": "United States", |
| "value": [213242, 22.86439111423725, "United States"] |
| }, { |
| "name": "Italy", |
| "value": [110574, 11.856047040759652, "Italy"] |
| }, { |
| "name": "Spain", |
| "value": [104118, 11.163817043697554, "Spain"] |
| }, { |
| "name": "China", |
| "value": [82361, 8.830971931231625, "China"] |
| }, { |
| "name": "Germany", |
| "value": [77872, 8.349649059978255, "Germany"] |
| }, { |
| "name": "France", |
| "value": [57749, 6.192005901539504, "France"] |
| }, { |
| "name": "Iran", |
| "value": [47593, 5.103051773571311, "Iran"] |
| }, { |
| "name": "United Kingdom", |
| "value": [29865, 3.202207072840695, "United Kingdom"] |
| }, { |
| "name": "Switzerland", |
| "value": [17768, 1.905133610253925, "Switzerland"] |
| }, { |
| "name": "Turkey", |
| "value": [15679, 1.6811453103991045, "Turkey"] |
| }, { |
| "name": "Belgium", |
| "value": [13964, 1.4972583145872247, "Belgium"] |
| }, { |
| "name": "Netherlands", |
| "value": [13696, 1.4685226207810533, "Netherlands"] |
| }, { |
| "name": "Austria", |
| "value": [10711, 1.1484627476041078, "Austria"] |
| }, { |
| "name": "Korea, South", |
| "value": [9887, 1.0601112114239395, "Korea, South"] |
| }, { |
| "name": "Canada", |
| "value": [9560, 1.0250493760708872, "Canada"] |
| }, { |
| "name": "Portugal", |
| "value": [8251, 0.8846948119205952, "Portugal"] |
| }, { |
| "name": "Brazil", |
| "value": [6836, 0.7329746375335339, "Brazil"] |
| }, { |
| "name": "Israel", |
| "value": [6092, 0.6532009203999837, "Israel"] |
| }, { |
| "name": "Sweden", |
| "value": [4947, 0.5304308852952593, "Sweden"] |
| }, { |
| "name": "Norway", |
| "value": [4863, 0.52142417529631, "Norway"] |
| }, { |
| "name": "Australia", |
| "value": [4862, 0.5213169525582273, "Australia"] |
| }, { |
| "name": "Czechia", |
| "value": [3508, 0.37613736519421254, "Czechia"] |
| }, { |
| "name": "Ireland", |
| "value": [3447, 0.3695967781711661, "Ireland"] |
| }, { |
| "name": "Denmark", |
| "value": [3290, 0.35276280829217765, "Denmark"] |
| }, { |
| "name": "Chile", |
| "value": [3031, 0.3249921191287509, "Chile"] |
| }, { |
| "name": "Malaysia", |
| "value": [2908, 0.31180372234457526, "Malaysia"] |
| }, { |
| "name": "Russia", |
| "value": [2777, 0.2977575436557378, "Russia"] |
| }, { |
| "name": "Ecuador", |
| "value": [2748, 0.29464808425133865, "Ecuador"] |
| }, { |
| "name": "Poland", |
| "value": [2554, 0.2738468730632893, "Poland"] |
| }, { |
| "name": "Romania", |
| "value": [2460, 0.2637679356835128, "Romania"] |
| }]; |
| |
| var option = { |
| backgroundColor: '#333', |
| visualMap: { |
| dimension: 0, |
| left: 10, |
| itemWidth: 12, |
| min: data[29].value[0], |
| max: data[0].value[0], |
| text: ['High', 'Low'], |
| textStyle: { |
| color: '#ddd' |
| }, |
| inRange: { |
| color: ['lightskyblue', 'yellow', 'orangered', 'red'] |
| } |
| }, |
| series: [{ |
| type: 'pie', |
| data: data, |
| roseType: 'radius', |
| radius: ['30%', '70%'] |
| }] |
| }; |
| |
| var chart = testHelper.create(echarts, 'main6', { |
| title: 'Case from https://gallery.echartsjs.com/editor.html?c=xpm1ZhhOCG', |
| height: 300, |
| option: option |
| }); |
| }); |
| |
| </script> |
| |
| <script> |
| require([ |
| 'echarts'/*, 'map/js/china' */ |
| ], function (echarts) { |
| const option = { |
| backgroundColor: '#2c343c', |
| visualMap: { |
| show: false, |
| min: 80, |
| max: 600, |
| inRange: { |
| colorLightness: [0, 1] |
| } |
| }, |
| series : [ |
| { |
| name: '访问来源', |
| type: 'pie', |
| radius: '55%', |
| data:[ |
| {value:235, name:'视频广告'}, |
| {value:274, name:'联盟广告'}, |
| {value:310, name:'邮件营销'}, |
| {value:335, name:'直接访问'}, |
| {value:400, name:'搜索引擎'} |
| ], |
| roseType: 'angle', |
| label: { |
| textStyle: { |
| color: 'rgba(255, 255, 255, 0.3)' |
| } |
| }, |
| labelLine: { |
| smooth: true, |
| minTurnAngle: 120, |
| lineStyle: { |
| color: 'rgba(255, 255, 255, 0.3)' |
| } |
| }, |
| itemStyle: { |
| color: '#c23531', |
| shadowBlur: 200, |
| shadowColor: 'rgba(0, 0, 0, 0.5)' |
| } |
| } |
| ] |
| }; |
| var chart = testHelper.create(echarts, 'main7', { |
| title: 'Case from https://echarts.apache.org/examples/zh/editor.html?c=doc-example/tutorial-styling-step5', |
| height: 300, |
| option: option |
| }); |
| }); |
| |
| </script> |
| |
| <script> |
| require([ |
| 'echarts'/*, 'map/js/china' */ |
| ], function (echarts) { |
| const option = { |
| series: [ |
| { |
| name: '访问来源', |
| type: 'pie', |
| radius: '50%', |
| center: ['25%', '50%'], |
| data: [ |
| { value: 1, name: '搜索引擎' }, |
| ], |
| emphasis: { |
| itemStyle: { |
| shadowBlur: 10, |
| shadowOffsetX: 0, |
| shadowColor: 'rgba(0, 0, 0, 0.5)' |
| } |
| }, |
| label: { |
| position: 'inside' |
| } |
| }, |
| { |
| name: '访问来源1', |
| type: 'pie', |
| radius: '50%', |
| center: ['75%', '50%'], |
| data: [ |
| { value: 1, name: '搜索引擎' }, |
| ], |
| emphasis: { |
| itemStyle: { |
| shadowBlur: 10, |
| shadowOffsetX: 0, |
| shadowColor: 'rgba(0, 0, 0, 0.5)' |
| } |
| }, |
| label: { |
| position: 'outside' |
| } |
| }, |
| ] |
| }; |
| |
| setTimeout(() => { |
| option.series[0].label.position = 'outside'; |
| option.series[1].label.position = 'inside'; |
| chart.setOption(option); |
| }, 2000); |
| setTimeout(() => { |
| option.series[0].label.position = 'inside'; |
| option.series[1].label.position = 'outside'; |
| chart.setOption(option); |
| }, 4000); |
| setTimeout(() => { |
| option.series[0].label.position = 'outside'; |
| option.series[1].label.position = 'inside'; |
| chart.setOption(option); |
| }, 6000); |
| |
| var chart = testHelper.create(echarts, 'main8', { |
| title: 'labelLine should be hidden when position is not \'outside\'', |
| height: 300, |
| option: option |
| }); |
| |
| }); |
| </script> |
| |
| <script> |
| require([ |
| 'echarts'/*, 'map/js/china' */ |
| ], function (echarts) { |
| const option = { |
| series: [ |
| { |
| name: 'Access From', |
| type: 'pie', |
| radius: 50, |
| data: [ |
| { value: 1, name: 'Search Engine' }, |
| { value: 0, name: 'Direct' }, |
| { value: 0, name: 'Union Ads' }, |
| { value: 1, name: 'Video Ads' } |
| ], |
| label: { |
| show: true |
| }, |
| } |
| ] |
| }; |
| |
| var chart = testHelper.create(echarts, 'main9', { |
| title: [ |
| 'The first label shoud be rendered correctly when it\'s followed by several zero values', |
| 'Test case from issue #16208', |
| ], |
| height: 300, |
| option: option |
| }); |
| |
| }); |
| </script> |
| |
| <script> |
| require([ |
| 'echarts'/*, 'map/js/china' */ |
| ], function (echarts) { |
| const option = { |
| series: [ |
| { |
| name: "Access From", |
| type: "pie", |
| radius: "50%", |
| data: [ |
| { value: 1048, name: "Search Engine" }, |
| { value: 735, name: "Direct" }, |
| { value: 580, name: "Email" }, |
| { value: 484, name: "Union Ads" }, |
| { value: 300, name: "Video Ads" }, |
| ], |
| }, |
| ], |
| }; |
| |
| var chart = testHelper.create(echarts, 'main10', { |
| title: [ |
| 'Label line should hide when emphasis after update the emphasis.labelLine', |
| 'also label should be hidden when sector was selected', |
| 'Test case from issue #16539', |
| ], |
| height: 300, |
| option: option, |
| button: [ |
| { |
| text: 'Click to update options', |
| onClick: () => { |
| chart.setOption({ |
| series: [ |
| { |
| selectedMode: true, |
| emphasis: { |
| labelLine: { |
| show: false, |
| }, |
| }, |
| select: { |
| label: { |
| show: false, |
| } |
| } |
| }, |
| ], |
| }) |
| } |
| } |
| ] |
| }); |
| |
| }); |
| </script> |
| </body> |
| </html> |