用echarts实现的一个圆环图标

大家一谈论到echarts,都知道他在程序开发中很有用,比如实现一个柱状图、折线图、饼图。今天我这篇博客主要来讲下如何实现一个圆环图表,部分核心代码如下:

window.onload=function(){
	//圆环图各环节的颜色
	    // 需要展示的数据
    let initData = [{name:'data1',value:80},{name:'data2',value:40},{name:'data3',value:60},{name:'data4',value:60}]
    let names = initData.map((item)=>item.name) // 获取名称
    let values = initData.map((item)=>item.value) // 获取数值
    let total = values.reduce((pre,cur)=>pre+=cur,0) // 总和
    //alert(sum);
    /*let color = [ // 颜色
        ['#6fc1fb','#1971e7'],
        ['#983fff','#2c23ff'],
        ['#fff582','#59f9d2'],
        ['#fff545','#59f9d2']
    ]*/
    let color = [ // 颜色
        '#5C73C7',
        '#96CB73',
        '#F6C752',
        '#E76564'
    ]
    let refers = []
    let yAxis = []
    for(let i=0;i<initData.length;i++){
    	refers.push({
            type: 'pie',
            clockWise: false, //顺时加载
            hoverAnimation: false, // 鼠标移入变大
            radius: [60 - i*12 + '%',53 - i*12 + '%'], // 圆环
            center: ['45%','50%'],
            itemStyle: {
                normal: {
                	formatter:initData[i].name,
                    label: {
                        show: false,
                        position: 'outside'
                    },
                    labelLine: {
                        show: true,
                        /*length: 15,             // 在 label 位置 设置为'outside'的时候会显示视觉引导线。
		                length2: 10,            // 视觉引导项第二段的长度。
		                lineStyle: {            // 视觉引导线的样式
		                    color: '#000',
		                    width: 1
		                }*/
                    },
                    borderWidth: 18
                }
            },
            data: [{
                name: initData[i].name,
                value: initData[i].value,
                itemStyle: {
                   /* normal: { // 渐变色
                        color: new echarts.graphic.LinearGradient(0,1,0,0,[{
                            offset: 0,
                            color: color[i][0]
                        },{
                            offset: 1,
                            color: color[i][1]
                        }])
                    }*/
                },
            },{ // 阴影段
                name: '',
                value: total - initData[i].value,
                itemStyle: {
                    normal: {
                        color: 'transparent'
                    }
                },
                tooltip: { // 不显示提示框
                    show: false
                },
                hoverAnimation: false // 鼠标移入变大
            }]
        })
        refers.push({
            name: '',
            type: 'pie',
            clockWise: false, //顺时加载
            z: 1, // 层级,默认为 2,z小的会被z大的覆盖住
            hoverAnimation: false, // 鼠标移入变大
            radius: [60 - i*12 + '%',53 - i*12 + '%'], // 圆环
            center: ['45%','50%'], // 位置
            label: {
                show: false
            },
            itemStyle: {
                normal: {
                    label: {
                        show: false
                    },
                    labelLine: {
                        show: false
                    },
                    borderWidth: 18
                }
            },
            data: [{ // 阴影的75%
                value: 10,
                itemStyle: {
                    normal: {
                        color: 'rgba(1,179,238,0.1)'
                    }
                },
                tooltip: {
                    show: false
                },
            },{ // 阴影的最后25%,透明
                value: 0,
                itemStyle: {
                    normal: {
                        color: 'rgba(0,0,0,0)',
                        borderWidth: 0
                    }
                },
                tooltip: {
                    show: false
                },
            }]
        })
        yAxis.push(initData[i].name)
    }
	

实现效果如下:

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

piaoyiren

谢谢你的欣赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值