持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情
hey, 我是pino🥳。一枚小菜鸟,期待关注➕ 点赞,共同成长~
最近一直在使用echarts开发一些可视化的页面,昨天遇到了一些由于可展示区域过小,导致指示线的文字会重叠的问题。进行记录。
修改前问题:
修改方法:
将series下的avoidLabelOverlap修改为true(是否启用防止标签重叠策略)
设置最小扇区角度,minAngle(最小的扇区角度(0 ~ 360)
调整指示线文字的显示大小
series: [
{
name: '省份',
type: 'pie',
radius: ['40%', '60%'], // 半径
center: ['40%', '54%'], // 位置
minAngle: 5,
avoidLabelOverlap: true,
label: {
normal: {
formatter: '{d}%',
textStyle: {
fontWeight: 'normal',
fontSize: 12
}
}
}
}
]
如果出现指示线文字过长,还可以对其进行截字处理。
通过formatter(标签内容格式器,支持字符串模板和回调函数两种形式,字符串模板与回调函数返回的字符串均支持用 \n 换行) 属性。
series: [
{
name: '省份',
type: 'pie',
radius: ['40%', '60%'], // 半径
center: ['40%', '54%'], // 位置
minAngle: 5,
avoidLabelOverlap: true,
label: {
normal: {
textStyle: {
fontWeight: 'normal',
fontSize: 12
},
formatter(v) {
let text = Math.round(v.percent)+'%' + '' + v.name
if(text.length <= 8)
{
return text;
}else if(text.length > 8 && text.length <= 16){
return text = `${text.slice(0,8)}\n${text.slice(8)}`
}else if(text.length > 16 && text.length <= 24){
return text = `${text.slice(0,8)}\n${text.slice(8,16)}\n${text.slice(16)}`
}else if(text.length > 24 && text.length <= 30){
return text = `${text.slice(0,8)}\n${text.slice(8,16)}\n${text.slice(16,24)}\n${text.slice(24)}`
}else if(text.length > 30){
return text = `${text.slice(0,8)}\n${text.slice(8,16)}\n${text.slice(16,24)}\n${text.slice(24,30)}\n${text.slice(30)}`
}
}
}
}
}
]
改造后:
写在最后 ⛳
未来可能会更新实现mini-vue3和javascript基础知识系列,希望能一直坚持下去,期待多多点赞🤗🤗,一起进步!🥳🥳