首页 前端知识 echarts 图形label动态轮播效果 (饼图实例)

echarts 图形label动态轮播效果 (饼图实例)

2024-06-08 22:06:10 前端知识 前端哥 244 999 我要收藏

核心代码块
我们只需要写一个定时器,在其中循环每个部分,不断地让他们高亮显示和高亮消失就可以做出轮播效果:

let timer = setInterval(() => {
     const dataLen = 数组.length
     // 取消之前高亮的图形
     myChart.dispatchAction({
	     type: 'downplay',
	     seriesIndex: 0,
	     dataIndex: currentIndex
     })
     currentIndex = (currentIndex + 1) % dataLen
     // 高亮当前图形
     myChart.dispatchAction({
	     type: 'highlight',
	     seriesIndex: 0,
	     dataIndex: currentIndex
     })
 }, 2000)
    // 离开当前页面时销毁定时器
 this.$once('hook:beforeDestroy', () => {
     clearInterval(timer);
     timer = null;
 })

api

dispatchAction({
    type: 'downplay',
    // 可选,系列 index,可以是一个数组指定多个系列
    seriesIndex?: number|Array,
    // 可选,系列名称,可以是一个数组指定多个系列
    seriesName?: string|Array,
    // 可选,数据的 index
    dataIndex?: number,
    // 可选,数据的 名称
    name?: string
})

饼图代码 仅供参考,

option = {
    tooltip: {
        trigger: 'item',
        formatter: '{a} <br/>{b}: {c} ({d}%)'
    },
    legend: {
        orient: 'vertical',
        left: 10,
        data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎']
    },
    series: [
        {
            name: '访问来源',
            type: 'pie',
            radius: ['50%', '70%'],
            avoidLabelOverlap: false,
            label: {
                show: false,
                position: 'center'
            },
            emphasis: {
                label: {
                    show: true,
                    fontSize: '30',
                    fontWeight: 'bold'
                }
            },
            labelLine: {
                show: false
            },
            data: [
                {value: 335, name: '直接访问'},
                {value: 310, name: '邮件营销'},
                {value: 234, name: '联盟广告'},
                {value: 135, name: '视频广告'},
                {value: 1548, name: '搜索引擎'}
            ]
        }
    ]
};

提示框例子

tooltip: {
    trigger: 'item',
     formatter: (params) => {
    
        let info = '<ul><li style="text-align: left">' + params.name + '</li>';
        // params.forEach((item, i) => {
            info +=
                `<li style="text-align: left">${params.marker}${params.seriesName}:<span> ${(params.value)}个</span></li>`
        // });
        return info + '</ul>'
    }
},

图例例子 设置自定义legend

 //设置自定义legend 的重点
 formatter: function (name) {
     // 获取legend显示内容
     let data = 数组; //这个是展示的数据
     let total = 0;
     let tarValue = 0;
     let value = 0;
     for (let i = 0, l = data.length; i < l; i++) {
         total += data[i].value;
         if (data[i].name == name) {
             tarValue = data[i].value;
             value = data[i].value;
         }
     }
     let p = total === 0 ? 0 : ((tarValue / total) * 100).toFixed(1);
     return [
         "{a|" +
         echarts.format.truncateText(
             name,
             40,
             "9px Microsoft Yahei",
             "…" //如果宽度超过80会出现...
         ) +
         "}",
         // "{b|" + p + "%}",
         "{x|" + value + "}" //a、b、x、跟下面的rich对应
     ].join(" ");
 },
转载请注明出处或者链接地址:https://www.qianduange.cn//article/11592.html
标签
评论
发布的文章
大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!