核心代码块
我们只需要写一个定时器,在其中循环每个部分,不断地让他们高亮显示和高亮消失就可以做出轮播效果:
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(" ");
},