案例1
| |
| |
| |
| <!DOCTYPE html> |
| <html lang="en" style="height: 100%"> |
| <head> |
| <meta charset="utf-8"> |
| </head> |
| <body style="height: 100%; margin: 0"> |
| <div id="container" style="width: 550px;height: 350px"></div> |
| |
| <script type="text/javascript" src="https://registry.npmmirror.com/echarts/5.4.3/files/dist/echarts.min.js"></script> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <script type="text/javascript"> |
| var dom = document.getElementById('container'); |
| var myChart = echarts.init(dom, null, { |
| renderer: 'canvas', |
| useDirtyRect: false |
| }); |
| var app = {}; |
| |
| var option; |
| |
| option = { |
| title: { |
| text: 'Funnel' |
| }, |
| tooltip: { |
| trigger: 'item', |
| formatter: '{a} <br/>{b} : {c}%' |
| }, |
| toolbox: { |
| feature: { |
| dataView: { readOnly: false }, |
| restore: {}, |
| saveAsImage: {} |
| } |
| }, |
| legend: { |
| data: ['Show', 'Click', 'Visit', 'Inquiry', 'Order'] |
| }, |
| series: [ |
| { |
| name: 'Funnel', |
| type: 'funnel', |
| left: '10%', |
| top: 60, |
| bottom: 60, |
| width: '80%', |
| min: 0, |
| max: 100, |
| minSize: '0%', |
| maxSize: '100%', |
| sort: 'descending', |
| gap: 2, |
| label: { |
| show: true, |
| position: 'inside' |
| }, |
| labelLine: { |
| length: 10, |
| lineStyle: { |
| width: 1, |
| type: 'solid' |
| } |
| }, |
| itemStyle: { |
| borderColor: '#fff', |
| borderWidth: 1 |
| }, |
| emphasis: { |
| label: { |
| fontSize: 20 |
| } |
| }, |
| data: [ |
| { value: 60, name: 'Visit' }, |
| { value: 40, name: 'Inquiry' }, |
| { value: 20, name: 'Order' }, |
| { value: 80, name: 'Click' }, |
| { value: 100, name: 'Show' } |
| ] |
| } |
| ] |
| }; |
| |
| if (option && typeof option === 'object') { |
| myChart.setOption(option); |
| } |
| |
| window.addEventListener('resize', myChart.resize); |
| </script> |
| </body> |
| </html> |
- 效果图

案例2
| |
| |
| |
| <!DOCTYPE html> |
| <html lang="en" style="height: 100%"> |
| <head> |
| <meta charset="utf-8"> |
| </head> |
| <body style="height: 100%; margin: 0"> |
| <div id="container" style="width: 700px;height: 350px"></div> |
| |
| <script type="text/javascript" src="https://registry.npmmirror.com/echarts/5.4.3/files/dist/echarts.min.js"></script> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <script type="text/javascript"> |
| var dom = document.getElementById('container'); |
| var myChart = echarts.init(dom, null, { |
| renderer: 'canvas', |
| useDirtyRect: false |
| }); |
| var app = {}; |
| |
| var option; |
| |
| option = { |
| title: { |
| text: 'Funnel Compare', |
| subtext: 'Fake Data', |
| left: 'left', |
| top: 'bottom' |
| }, |
| tooltip: { |
| trigger: 'item', |
| formatter: '{a} <br/>{b} : {c}%' |
| }, |
| toolbox: { |
| show: true, |
| orient: 'vertical', |
| top: 'center', |
| feature: { |
| dataView: { readOnly: false }, |
| restore: {}, |
| saveAsImage: {} |
| } |
| }, |
| legend: { |
| orient: 'vertical', |
| left: 'left', |
| data: ['Prod A', 'Prod B', 'Prod C', 'Prod D', 'Prod E'] |
| }, |
| series: [ |
| { |
| name: 'Funnel', |
| type: 'funnel', |
| width: '40%', |
| height: '45%', |
| left: '5%', |
| top: '50%', |
| funnelAlign: 'right', |
| data: [ |
| { value: 60, name: 'Prod C' }, |
| { value: 30, name: 'Prod D' }, |
| { value: 10, name: 'Prod E' }, |
| { value: 80, name: 'Prod B' }, |
| { value: 100, name: 'Prod A' } |
| ] |
| }, |
| { |
| name: 'Pyramid', |
| type: 'funnel', |
| width: '40%', |
| height: '45%', |
| left: '5%', |
| top: '5%', |
| sort: 'ascending', |
| funnelAlign: 'right', |
| data: [ |
| { value: 60, name: 'Prod C' }, |
| { value: 30, name: 'Prod D' }, |
| { value: 10, name: 'Prod E' }, |
| { value: 80, name: 'Prod B' }, |
| { value: 100, name: 'Prod A' } |
| ] |
| }, |
| { |
| name: 'Funnel', |
| type: 'funnel', |
| width: '40%', |
| height: '45%', |
| left: '55%', |
| top: '5%', |
| funnelAlign: 'left', |
| data: [ |
| { value: 60, name: 'Prod C' }, |
| { value: 30, name: 'Prod D' }, |
| { value: 10, name: 'Prod E' }, |
| { value: 80, name: 'Prod B' }, |
| { value: 100, name: 'Prod A' } |
| ] |
| }, |
| { |
| name: 'Pyramid', |
| type: 'funnel', |
| width: '40%', |
| height: '45%', |
| left: '55%', |
| top: '50%', |
| sort: 'ascending', |
| funnelAlign: 'left', |
| data: [ |
| { value: 60, name: 'Prod C' }, |
| { value: 30, name: 'Prod D' }, |
| { value: 10, name: 'Prod E' }, |
| { value: 80, name: 'Prod B' }, |
| { value: 100, name: 'Prod A' } |
| ] |
| } |
| ] |
| }; |
| |
| if (option && typeof option === 'object') { |
| myChart.setOption(option); |
| } |
| |
| window.addEventListener('resize', myChart.resize); |
| </script> |
| </body> |
| </html> |
- 效果图

案例3
| |
| |
| |
| <!DOCTYPE html> |
| <html lang="en" style="height: 100%"> |
| <head> |
| <meta charset="utf-8"> |
| </head> |
| <body style="height: 100%; margin: 0"> |
| <div id="container" style="width: 510px;height: 350px"></div> |
| |
| <script type="text/javascript" src="https://registry.npmmirror.com/echarts/5.4.3/files/dist/echarts.min.js"></script> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <script type="text/javascript"> |
| var dom = document.getElementById('container'); |
| var myChart = echarts.init(dom, null, { |
| renderer: 'canvas', |
| useDirtyRect: false |
| }); |
| var app = {}; |
| |
| var option; |
| |
| option = { |
| title: { |
| text: 'Funnel' |
| }, |
| tooltip: { |
| trigger: 'item', |
| formatter: '{a} <br/>{b} : {c}%' |
| }, |
| toolbox: { |
| feature: { |
| dataView: { readOnly: false }, |
| restore: {}, |
| saveAsImage: {} |
| } |
| }, |
| legend: { |
| data: ['Show', 'Click', 'Visit', 'Inquiry', 'Order'] |
| }, |
| series: [ |
| { |
| name: 'Expected', |
| type: 'funnel', |
| left: '10%', |
| width: '80%', |
| label: { |
| formatter: '{b}Expected' |
| }, |
| labelLine: { |
| show: false |
| }, |
| itemStyle: { |
| opacity: 0.7 |
| }, |
| emphasis: { |
| label: { |
| position: 'inside', |
| formatter: '{b}Expected: {c}%' |
| } |
| }, |
| data: [ |
| { value: 60, name: 'Visit' }, |
| { value: 40, name: 'Inquiry' }, |
| { value: 20, name: 'Order' }, |
| { value: 80, name: 'Click' }, |
| { value: 100, name: 'Show' } |
| ] |
| }, |
| { |
| name: 'Actual', |
| type: 'funnel', |
| left: '10%', |
| width: '80%', |
| maxSize: '80%', |
| label: { |
| position: 'inside', |
| formatter: '{c}%', |
| color: '#fff' |
| }, |
| itemStyle: { |
| opacity: 0.5, |
| borderColor: '#fff', |
| borderWidth: 2 |
| }, |
| emphasis: { |
| label: { |
| position: 'inside', |
| formatter: '{b}Actual: {c}%' |
| } |
| }, |
| data: [ |
| { value: 30, name: 'Visit' }, |
| { value: 10, name: 'Inquiry' }, |
| { value: 5, name: 'Order' }, |
| { value: 50, name: 'Click' }, |
| { value: 80, name: 'Show' } |
| ], |
| |
| z: 100 |
| } |
| ] |
| }; |
| |
| if (option && typeof option === 'object') { |
| myChart.setOption(option); |
| } |
| |
| window.addEventListener('resize', myChart.resize); |
| </script> |
| </body> |
| </html> |
- 效果图

案例4
| |
| |
| |
| <!DOCTYPE html> |
| <html lang="en" style="height: 100%"> |
| <head> |
| <meta charset="utf-8"> |
| </head> |
| <body style="height: 100%; margin: 0"> |
| <div id="container" style="width: 700px;height: 350px"></div> |
| |
| <script type="text/javascript" src="https://registry.npmmirror.com/echarts/5.4.3/files/dist/echarts.min.js"></script> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <script type="text/javascript"> |
| var dom = document.getElementById('container'); |
| var myChart = echarts.init(dom, null, { |
| renderer: 'canvas', |
| useDirtyRect: false |
| }); |
| var app = {}; |
| |
| var option; |
| |
| option = { |
| title: { |
| text: 'Funnel', |
| left: 'left', |
| top: 'bottom' |
| }, |
| tooltip: { |
| trigger: 'item', |
| formatter: '{a} <br/>{b} : {c}%' |
| }, |
| toolbox: { |
| orient: 'vertical', |
| top: 'center', |
| feature: { |
| dataView: { readOnly: false }, |
| restore: {}, |
| saveAsImage: {} |
| } |
| }, |
| legend: { |
| orient: 'vertical', |
| left: 'left', |
| data: ['Show', 'Click', 'Visit', 'Inquiry', 'Order'] |
| }, |
| series: [ |
| { |
| name: 'Funnel', |
| type: 'funnel', |
| width: '40%', |
| height: '45%', |
| left: '5%', |
| top: '50%', |
| data: [ |
| { value: 60, name: 'Visit' }, |
| { value: 30, name: 'Inquiry' }, |
| { value: 10, name: 'Order' }, |
| { value: 80, name: 'Click' }, |
| { value: 100, name: 'Show' } |
| ] |
| }, |
| { |
| name: 'Pyramid', |
| type: 'funnel', |
| width: '40%', |
| height: '45%', |
| left: '5%', |
| top: '5%', |
| sort: 'ascending', |
| data: [ |
| { value: 60, name: 'Visit' }, |
| { value: 30, name: 'Inquiry' }, |
| { value: 10, name: 'Order' }, |
| { value: 80, name: 'Click' }, |
| { value: 100, name: 'Show' } |
| ] |
| }, |
| { |
| name: 'Funnel', |
| type: 'funnel', |
| width: '40%', |
| height: '45%', |
| left: '55%', |
| top: '5%', |
| label: { |
| position: 'left' |
| }, |
| data: [ |
| { value: 60, name: 'Visit' }, |
| { value: 30, name: 'Inquiry' }, |
| { value: 10, name: 'Order' }, |
| { value: 80, name: 'Click' }, |
| { value: 100, name: 'Show' } |
| ] |
| }, |
| { |
| name: 'Pyramid', |
| type: 'funnel', |
| width: '40%', |
| height: '45%', |
| left: '55%', |
| top: '50%', |
| sort: 'ascending', |
| label: { |
| position: 'left' |
| }, |
| data: [ |
| { value: 60, name: 'Visit' }, |
| { value: 30, name: 'Inquiry' }, |
| { value: 10, name: 'Order' }, |
| { value: 80, name: 'Click' }, |
| { value: 100, name: 'Show' } |
| ] |
| } |
| ] |
| }; |
| |
| if (option && typeof option === 'object') { |
| myChart.setOption(option); |
| } |
| |
| window.addEventListener('resize', myChart.resize); |
| </script> |
| </body> |
| </html> |
- 效果图

· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术