之前一直想玩echarts,但是需求一直没有,当然主要原因是我懒,所以就一直没去用过它,哎,我是一个不合格的前端,但绝对是一条够咸的咸鱼。。。刚好最近有了这么个需求,估计上天想帮我翻个身吧。。。
首先肯定就是先安装echarts了,这个相信大家闭着眼都会了
npm install echarts --save
然后在需要用到的地方,import或者require引入就可以啦
现在有个需求是这样的,显示数据为top10的省份,根据后端返回来的数组按顺序从深到浅的颜色展示出来,刚开始以为要一个一个写颜色值,因为颜值是通过给series里面的data传递一个数组去每一项设置的,像这样就可以实现:
<div class="my_echarts"></div>
const myEchart = echarts.init(document.querySelector('.my_echarts'))
myEchart.setOption({
series:{
type:'pie',
label: {
show: true,
position: 'outside',
formatter: '{b},{c}'
},
emphasis: {
label: {
show: true
}
},
markLine: {
silent: true
},
data:[
{name:'广东',value:490,itemStyle:{color:'#c19100'}},
{name:'广西',value:200,itemStyle:{color:'#c79c19'}},
{name:'河南',value:200,itemStyle:{color:'#cda733'}},
{name:'湖南',value:300,itemStyle:{color:'#d3b24c'}},
{name:'湖北',value:380,itemStyle:{color:'#dabd66'}},
{name:'福建',value:490,itemStyle:{color:'#e0c87f'}},
{name:'云南',value:100,itemStyle:{color:'#e6d399'}},
{name:'新疆',value:234,itemStyle:{color:'#ecdeb2'}},
{name:'西藏',value:134,itemStyle:{color:'#f3e9cc'}},
{name:'台湾',value:456,itemStyle:{color:'#f9f4e6'}}
]
}
})
虽然是可以实现了,但是我是个咸鱼啊,咸鱼怎么会一个个去取色值,再一个个写上去,这也太辛苦了吧,毕竟后端不会给我上面这个数组,他只会给我像这样:
list:[
{name:'广东',value:490},
{name:'广西',value:200},
{name:'河南',value:200},
{name:'湖南',value:300},
{name:'湖北',value:380},
{name:'福建',value:490},
{name:'云南',value:100},
{name:'新疆',value:234},
{name:'西藏',value:134},
{name:'台湾',value:456}
]
哎,愁啊,这个色值难道真的要我一个个写上去吗,天啊,这也太麻烦了吧。。。。
由深到浅由深到浅。。。。啊,既然只显示top10,也就是十个,那不就是一个深的颜色,然后透明度从1降到0.1就行了吗
对哦,哎,这该死的聪明才智,那就是拿后端传过来的数组遍历一下就可以了,把色值改成raba就可以设置透明度了,重新来:
先拿到颜色值,这个应该都知道怎么拿吧 拿最深颜色那个就可以啦 ==> rgba(193,145,0,1)
// 从后端拿到的list
list=[
{name:'广东',value:490},
{name:'广西',value:200},
{name:'河南',value:200},
{name:'湖南',value:300},
{name:'湖北',value:380},
{name:'福建',value:490},
{name:'云南',value:100},
{name:'新疆',value:234},
{name:'西藏',value:134},
{name:'台湾',value:456}
]
let data = [];
list.forEach((item,i) => {
let obj = {};
obj.itemStyle = {};
obj.itemStyle.color = `rgba(193,145,0,${1 - i / 10})`;
data.push(obj)
})
myEchart.setOption({
series:{
type:'pie',
label: {
show: true,
position: 'outside',
formatter: '{b},{c}'
},
emphasis: {
label: {
show: true
}
},
markLine: {
silent: true
},
data
}
})
嗯…就很咸鱼…就很舒服…