| <!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> |
| require(['echarts'/*, 'map/js/china' */], function (echarts) { |
| var option; |
| var colorList = [{ |
| type: 'linear', |
| x: 0, |
| y: 0, |
| x2: 1, |
| y2: 1, |
| colorStops: [{ |
| offset: 0, |
| color: 'rgba(51,192,205,0.01)' // 0% 处的颜色 |
| }, |
| { |
| offset: 1, |
| color: 'rgba(51,192,205,0.57)' // 100% 处的颜色 |
| } |
| ], |
| globalCoord: false // 缺省为 false |
| }, |
| { |
| type: 'linear', |
| x: 1, |
| y: 0, |
| x2: 0, |
| y2: 1, |
| colorStops: [{ |
| offset: 0, |
| color: 'rgba(115,172,255,0.02)' // 0% 处的颜色 |
| }, |
| { |
| offset: 1, |
| color: 'rgba(115,172,255,0.67)' // 100% 处的颜色 |
| } |
| ], |
| globalCoord: false // 缺省为 false |
| }, |
| { |
| type: 'linear', |
| x: 1, |
| y: 0, |
| x2: 0, |
| y2: 0, |
| colorStops: [{ |
| offset: 0, |
| color: 'rgba(158,135,255,0.02)' // 0% 处的颜色 |
| }, |
| { |
| offset: 1, |
| color: 'rgba(158,135,255,0.57)' // 100% 处的颜色 |
| } |
| ], |
| globalCoord: false // 缺省为 false |
| }, |
| { |
| type: 'linear', |
| x: 0, |
| y: 1, |
| x2: 0, |
| y2: 0, |
| colorStops: [{ |
| offset: 0, |
| color: 'rgba(252,75,75,0.01)' // 0% 处的颜色 |
| }, |
| { |
| offset: 1, |
| color: 'rgba(252,75,75,0.57)' // 100% 处的颜色 |
| } |
| ], |
| globalCoord: false // 缺省为 false |
| }, |
| { |
| type: 'linear', |
| x: 1, |
| y: 1, |
| x2: 1, |
| y2: 0, |
| colorStops: [{ |
| offset: 0, |
| color: 'rgba(253,138,106,0.01)' // 0% 处的颜色 |
| }, |
| { |
| offset: 1, |
| color: '#FDB36ac2' // 100% 处的颜色 |
| } |
| ], |
| globalCoord: false // 缺省为 false |
| }, |
| { |
| type: 'linear', |
| x: 0, |
| y: 0, |
| x2: 1, |
| y2: 0, |
| colorStops: [{ |
| offset: 0, |
| color: 'rgba(254,206,67,0.12)' // 0% 处的颜色 |
| }, |
| { |
| offset: 1, |
| color: '#FECE4391' // 100% 处的颜色 |
| } |
| ], |
| globalCoord: false // 缺省为 false |
| } |
| ] |
| var colorLine = ['#33C0CD', '#73ACFF', '#9E87FF', '#FE6969', '#FDB36A', '#FECE43'] |
| |
| function getRich() { |
| let result = {} |
| colorLine.forEach((v, i) => { |
| result[`hr${i}`] = { |
| backgroundColor: colorLine[i], |
| borderRadius: 3, |
| width: 3, |
| height: 3, |
| padding: [0, 3, 3, -12] |
| } |
| result[`a${i}`] = { |
| padding: [-20, -60, 0, -20], |
| color: colorLine[i], |
| fontSize: 12 |
| } |
| }) |
| return result |
| } |
| let data = [{ |
| 'name': '北京', |
| 'value': 25 |
| }, { |
| 'name': '上海', |
| 'value': 20 |
| }, { |
| 'name': '广州', |
| 'value': 18 |
| }, { |
| 'name': '深圳', |
| 'value': 15 |
| }, { |
| 'name': '未知', |
| 'value': 13 |
| }, { |
| 'name': '海外', |
| 'value': 9 |
| }].sort((a, b) => { |
| return b.value - a.value |
| }) |
| data.forEach((v, i) => { |
| v.labelLine = { |
| lineStyle: { |
| width: 1, |
| color: colorLine[i] |
| } |
| } |
| }) |
| option = { |
| series: [{ |
| type: 'pie', |
| radius: '60%', |
| center: ['50%', '50%'], |
| clockwise: true, |
| avoidLabelOverlap: true, |
| label: { |
| show: true, |
| position: 'outside', |
| formatter: function(params) { |
| const name = params.name |
| const percent = params.percent + '%' |
| const index = params.dataIndex |
| return [`{a${index}|${name}:${percent}}`, `{hr${index}|}`].join('\n') |
| }, |
| rich: getRich() |
| }, |
| itemStyle: { |
| normal: { |
| color: function(params) { |
| return colorList[params.dataIndex] |
| } |
| } |
| }, |
| data, |
| roseType: 'radius' |
| }] |
| } |
| |
| var chart = testHelper.create(echarts, 'main0', { |
| title: [ |
| 'Test Case from https://gallery.echartsjs.com/editor.html?c=xgnWZ8Z9lI' |
| ], |
| option: option |
| // height: 300, |
| // buttons: [{text: 'btn-txt', onclick: function () {}}], |
| // recordCanvas: true, |
| }); |
| }); |
| </script> |
| |
| |
| |
| |
| |
| |
| |
| |
| <script> |
| require(['echarts'/*, 'map/js/china' */], function (echarts) { |
| var option; |
| |
| var data = [{ |
| value: 33310.12, |
| name: '邮件营销' |
| }, |
| { |
| value: 234.88, |
| name: '联盟广告' |
| }, |
| { |
| value: 13544444.44, |
| name: '视频广告' |
| }, |
| { |
| value: 1.00, |
| name: '搜索引擎' |
| }, |
| { |
| value: 310.12, |
| name: '测试文案1' |
| }, |
| { |
| value: 234.33, |
| name: '测试文案2' |
| }, |
| { |
| value: 135.55, |
| name: '测试文案3' |
| }, |
| { |
| value: 1548, |
| name: '测试文案文字超多' |
| } |
| ]; |
| var color = ['#000000', '#dedede', '#343434', '#dfdfdf', ]; |
| option = { |
| // title: { |
| // text: '饼图标签两端对称效果', |
| // subtext: '关键词: [饼图][环形图][引导线距离饼距离][label两端对称][label距离引导线距离]', |
| // x: 'center' |
| // }, |
| series: [ |
| // // 这个pie用于形成引导线和饼图间距 |
| { |
| type: 'pie', |
| radius: ['40%', '55%'], |
| minAngle: 90, |
| label: { |
| normal: { |
| show: false, |
| } |
| }, |
| data: data, |
| }, |
| { |
| name: '访问来源', |
| type: 'pie', |
| minAngle: 90, // label最小扇区大小 |
| label: { |
| normal: { |
| alignTo: 'edge', // label两端对称布局 |
| // ECharts v4.6.0 版本起,提供了 'labelLine' 与 'edge' 两种新的布局方式 |
| margin: 90, // 布局为两端对称时候需要外边距防止图表变形 数值随意不要太大 |
| distanceToLabelLine: 0, // label距离引导线距离 |
| formatter: function(param) { |
| return '{a|' + param.name + '}\n{hr|}\n' + '{d|' + param.value + '}'; |
| }, |
| opacity: 1, |
| backgroundColor: 'rgba(255, 0, 0, 0.2)', |
| rich: { |
| a: { |
| padding: [0, 10, 4, 10], // 4边距是文字和hr间距,此处的边距10用于解决label和引导线有间距问题 |
| color: 'blue' |
| }, |
| d: { |
| padding: [4, 10, 0, 10], |
| color: 'purple' |
| }, |
| hr: { |
| borderWidth: 1, |
| width: '100%', |
| height: 0, |
| borderColor: 'blue' |
| } |
| } |
| }, |
| }, |
| labelLine: { |
| lineStyle: { |
| color: 'blue' |
| } |
| }, |
| itemStyle: { |
| opacity: 0 |
| }, |
| radius: ['40%', '60%'], |
| data: data, |
| } |
| ] |
| }; |
| var chart = testHelper.create(echarts, 'main1', { |
| title: [ |
| 'Test Case from https://gallery.echartsjs.com/editor.html?c=x1TVKFGtZ1' |
| ], |
| option: option |
| // height: 300, |
| // buttons: [{text: 'btn-txt', onclick: function () {}}], |
| // recordCanvas: true, |
| }); |
| }); |
| </script> |
| |
| |
| |
| <script> |
| require(['echarts'/*, 'map/js/china' */], function (echarts) { |
| var option; |
| |
| var seriesData = [{ |
| name: "大白", |
| value: "40000" |
| }, { |
| name: "长大", |
| value: "53000" |
| }, { |
| name: "杜洛克", |
| value: "40000" |
| }, { |
| name: "约克猪", |
| value: "10000" |
| }, { |
| name: "二元", |
| value: "40000" |
| }, { |
| name: "三元", |
| value: "60000" |
| }, { |
| name: "大长", |
| value: "10000" |
| }, { |
| name: "PIC", |
| value: "20000" |
| }]; |
| var legendData1 = ["大白", "长大", "杜洛克", "约克猪"] |
| var legendData2 = ["二元", "三元", "大长","PIC"] |
| var colorList = ['#0066FF', '#2E2EE6', '#4400CC', '#00AACC', '#9BBF30', '#E60000', '#92368D', '#BF9926']; |
| option = { |
| backgroundColor: { |
| type: 'linear', |
| x: 0, |
| y: 0, |
| x2: 1, |
| y2: 1, |
| colorStops: [{ |
| offset: 0, |
| color: '#000F44' // 0% 处的颜色 |
| }, { |
| offset: 1, |
| color: '#000B3B' // 100% 处的颜色 |
| }], |
| globalCoord: false // 缺省为 false |
| }, |
| // title: { |
| // text: '品种', |
| // x: '56%', |
| // y: 'center', |
| // textStyle: { |
| // fontSize:40, |
| // color: '#fff' |
| // } |
| // }, |
| tooltip: { |
| trigger: 'item', |
| borderColor: 'rgba(255,255,255,.3)', |
| backgroundColor: 'rgba(13,5,30,.6)', |
| borderWidth: 1, |
| padding: 5, |
| formatter: function(parms) { |
| var str = parms.marker + "" + parms.data.name + "</br>" + |
| "数量:" + parms.data.value + "头</br>" + |
| "占比:" + parms.percent + "%"; |
| return str; |
| } |
| }, |
| legend: [{ |
| type: "scroll", |
| orient: 'vertical', |
| icon:'square', |
| left: '8%', |
| align: 'left', |
| top: 'center', |
| itemGap: 20, |
| // bottom:'50%', |
| textStyle: { |
| fontSize:14, |
| color: '#AAAAAA' |
| }, |
| data: legendData1 |
| }, { |
| type: "scroll", |
| orient: 'vertical', |
| icon:'square', |
| left: '18%', |
| align: 'left', |
| top: 'center', |
| itemGap: 20, |
| // bottom:'50%', |
| textStyle: { |
| fontSize:14, |
| color: '#AAAAAA' |
| }, |
| data: legendData2 |
| }], |
| series: [{ |
| type: 'pie', |
| z: 3, |
| center: ['62%', '50%'], |
| radius: ['25%', '37%'], |
| clockwise: true, |
| avoidLabelOverlap: true, |
| hoverOffset: 15, |
| itemStyle: { |
| normal: { |
| color: function(params) { |
| return colorList[params.dataIndex] |
| } |
| } |
| }, |
| label: { |
| show: true, |
| position: 'outside', |
| formatter: '{a|{b}:{d}%}\n{hr|}', |
| rich: { |
| // hr: { |
| // backgroundColor: 't', |
| // borderRadius: 3, |
| // width: 3, |
| // height: 3, |
| // padding: [3, 3, 0, -12] |
| // }, |
| a: { |
| color:'#fff', |
| padding: [0, -80, 20, -80] |
| } |
| } |
| }, |
| labelLine: { |
| normal: { |
| length: 40, |
| length2: 90, |
| lineStyle: { |
| width: 1 |
| } |
| } |
| }, |
| data: seriesData |
| }, { |
| name:'第一层环', |
| type: 'pie', |
| z: 2, |
| tooltip:{ |
| show:false |
| }, |
| center: ['62%', '50%'], |
| radius: ['37%', '47%'], |
| hoverAnimation: false, |
| clockWise: false, |
| itemStyle: { |
| normal: { |
| // shadowBlur: 40, |
| // shadowColor: 'rgba(0, 255, 255,.3)', |
| color: 'rgba(1,15,80,.9)', |
| }, |
| emphasis:{ |
| color: 'rgba(1,15,80,.9)', |
| } |
| }, |
| label: { |
| show: false |
| }, |
| data: [100] |
| }, { |
| name:'第二层环', |
| type: 'pie', |
| z: 1, |
| tooltip:{ |
| show:false |
| }, |
| center: ['62%', '50%'], |
| radius: ['47%', '62%'], |
| hoverAnimation: false, |
| clockWise: false, |
| itemStyle: { |
| normal: { |
| // shadowBlur: 40, |
| // shadowColor: 'rgba(0, 255, 255,.3)', |
| color: 'rgba(0,15,69,.8)', |
| }, |
| emphasis:{ |
| color: 'rgba(0,15,69,.8)', |
| } |
| }, |
| label: { |
| show: false |
| }, |
| data: [100] |
| }] |
| }; |
| var chart = testHelper.create(echarts, 'main2', { |
| title: [ |
| 'Test Case from https://gallery.echartsjs.com/editor.html?c=xD3PY0UKmS' |
| ], |
| option: option |
| // height: 300, |
| // buttons: [{text: 'btn-txt', onclick: function () {}}], |
| // recordCanvas: true, |
| }); |
| }); |
| </script> |
| |
| <script> |
| require(['echarts'], function (echarts) { |
| var option; |
| |
| let dashedPic = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAM8AAAAOBAMAAAB6G1V9AAAAD1BMVEX////Kysrk5OTj4+TJycoJ0iFPAAAAG0lEQVQ4y2MYBaNgGAMTQQVFOiABhlEwCugOAMqzCykGOeENAAAAAElFTkSuQmCC'; |
| let color = ['#FF8700', '#ffc300', '#00e473', '#009DFF']; |
| let chartData = [{ |
| name: "本科及以上", |
| value: 13211, |
| unit: '元' |
| }, |
| { |
| name: "高中", |
| value: 42111, |
| unit: '元' |
| }, |
| { |
| name: "初中及以下", |
| value: 81711, |
| unit: '元' |
| }, |
| { |
| name: "其他", |
| value: 121711, |
| unit: '元' |
| } |
| ]; |
| let arrName = []; |
| let arrValue = []; |
| let sum = 0; |
| let pieSeries = [], |
| lineYAxis = []; |
| |
| // 数据处理 |
| chartData.forEach((v, i) => { |
| arrName.push(v.name); |
| arrValue.push(v.value); |
| sum = sum + v.value; |
| }) |
| |
| // 图表option整理 |
| chartData.forEach((v, i) => { |
| pieSeries.push({ |
| name: '学历', |
| type: 'pie', |
| clockWise: false, |
| hoverAnimation: false, |
| radius: [65 - i * 15 + '%', 57 - i * 15 + '%'], |
| center: ["30%", "50%"], |
| label: { |
| show: false |
| }, |
| data: [{ |
| value: v.value, |
| name: v.name |
| }, { |
| value: sum - v.value, |
| name: '', |
| itemStyle: { |
| color: "rgba(0,0,0,0)" |
| } |
| }] |
| }); |
| pieSeries.push({ |
| name: '', |
| type: 'pie', |
| silent: true, |
| z: 1, |
| clockWise: false, //顺时加载 |
| hoverAnimation: false, //鼠标移入变大 |
| radius: [65 - i * 15 + '%',57 - i * 15 + '%'], |
| center: ["30%", "50%"], |
| label: { |
| show: false |
| }, |
| data: [{ |
| value: 7.5, |
| itemStyle: { |
| color: "#E3F0FF" |
| } |
| }, { |
| value: 2.5, |
| name: '', |
| itemStyle: { |
| color: "rgba(0,0,0,0)" |
| } |
| }] |
| }); |
| v.percent = (v.value / sum * 100).toFixed(1) + "%"; |
| lineYAxis.push({ |
| value: i, |
| textStyle: { |
| rich: { |
| circle: { |
| color: color[i], |
| padding: [0, 5] |
| } |
| } |
| } |
| }); |
| }) |
| |
| option = { |
| backgroundColor: '#fff', |
| color: color, |
| grid: { |
| top: '15%', |
| bottom: '54%', |
| left: "30%", |
| containLabel: false |
| }, |
| yAxis: [{ |
| type: 'category', |
| inverse: true, |
| axisLine: { |
| show: false |
| }, |
| axisTick: { |
| show: false |
| }, |
| axisLabel: { |
| formatter: function(params) { |
| let item = chartData[params]; |
| console.log(item) |
| return '{line|}{circle|●}{name|'+ item.name +'}{bd||}{percent|'+item.percent+'}{value|'+ item.value+'}{unit|元}' |
| }, |
| interval: 0, |
| inside: true, |
| textStyle: { |
| color: "#333", |
| fontSize: 14, |
| rich: { |
| line: { |
| width: 170, |
| height: 10, |
| backgroundColor: {image: dashedPic} |
| }, |
| name: { |
| color: '#666', |
| fontSize: 14, |
| }, |
| bd: { |
| color: '#ccc', |
| padding: [0, 5], |
| fontSize: 14, |
| }, |
| percent:{ |
| color: '#333', |
| fontSize: 14, |
| }, |
| value: { |
| color: '#333', |
| fontSize: 16, |
| fontWeight: 500, |
| padding: [0, 0, 0, 20] |
| }, |
| unit: { |
| fontSize: 14 |
| } |
| } |
| }, |
| show: true |
| }, |
| data: lineYAxis |
| }], |
| xAxis: [{ |
| show: false |
| }], |
| series: pieSeries |
| }; |
| var chart = testHelper.create(echarts, 'main3', { |
| title: [ |
| 'Test Case from https://gallery.echartsjs.com/editor.html?c=xF_AXrV7sK' |
| ], |
| option: option |
| // height: 300, |
| // buttons: [{text: 'btn-txt', onclick: function () {}}], |
| // recordCanvas: true, |
| }); |
| }); |
| </script> |
| </body> |
| </html> |
| |