使用echarts制作环表时,样式上遇到这么一个需求,目前做到的效果如下图:
需求要求红框标记里的绿色区域背景色和环表区域保持同步
demo代码如下:
app.title = '环形图';
option = {
title:{
text:'aaaa',
top:'50%',
left:'50%'
},
tooltip: {
trigger: 'item',
formatter: "{a} <br/>{b}: {c} ({d}%)"
},
legend: {
orient: 'vertical',
x: 'left',
data:['直接访问','邮件营销','联盟广告','视频广告','搜索引擎']
},
series: [
{
name:'访问来源',
type:'pie',
radius: ['50%', '70%'],
avoidLabelOverlap: false,
label: {
normal: {
show: true,
formatter:function(){
var str="{a|{a}} \n{b|{b}}: {c} {c|{d}%}"
return str;
},
rich:{
a: {
color:'#000'
},
b: {
color:'red'
},
c:{
color: '#fff',
backgroundColor: 'green',
align: 'right',
padding: [2, 4],
borderRadius: 50
},
}
},
emphasis: {
show: true,
textStyle: {
fontSize: '30',
fontWeight: 'bold'
}
},
},
labelLine: {
normal: {
show: false
}
},
data:[
{value:335, name:'直接访问'},
{value:310, name:'邮件营销'},
{value:234, name:'联盟广告'},
{value:135, name:'视频广告'},
{value:1548, name:'搜索引擎'}
]
}
]
};
可以先在

rich
里面定义好颜色,如下面的color0
color1
color2
等等,每个color代表不同的颜色,color后面的0 1 2
是索引,然后formatter
里面就可以直接用了。用了es6的写法,加/斜杠是为了转义下大括号。