因为柱状图的实际数据差距过大,有几十万的,还有几千的,这样少的数据在图上就基本看不到了,所以用了echarts的log轴,但是log轴的数据比例又不像之前的比例一样,需求又想要log轴的感觉,又不想失去原来的比例,所以就手动实现了。
原理
原理就是先将其中的总数用js转换成log值,然后再算出另一个数相对于总数的百分比,然后用总数的log值乘这个百分比,就得到了另一个数相对于总数的一个值,这个值虽然不是log值,但是也相当于log值了,下面是代码:
/* 企业总数 */
qyzsArr() {
let qyzsArr = this.gzlsqk.qyzsArr || []
// 总数的log值
let zsLog = []
qyzsArr.forEach((item)=>{
return zsLog.push(Math.log(item))
})
return zsLog.filter((item, index)=>{
return index !== this.isHideData
})
},
/*企业总数的tooltip*/
qyzsTootlip() {
let qyzsArr = this.gzlsqk.qyzsArr || []
return qyzsArr.filter((item, index)=>{
return index !== this.isHideData
})
},
/* 复工数 */
fgzsArr() {
let fgzsArr = this.gzlsqk.fgzsArr || []
let qyzsArr = this.gzlsqk.qyzsArr || []
// 百分比数组
let percent = []
// 获得复工数相对于总数的百分比
fgzsArr.forEach((item,index)=>{
return percent.push(fgzsArr[index]/qyzsArr[index])
})
// 总数的log值
let zsLog = []
qyzsArr.forEach((item)=>{
return zsLog.push(Math.log(item))
})
// 复工数相对于总数的log值
let fgLog = []
fgzsArr.forEach((item,index)=>{
return fgLog.push(zsLog[index] * percent[index])
})
return fgLog.filter((item, index)=>{
return index !== this.isHideData
})
},
/*复工总数的tooltip*/
fgzsTootlip() {
let fgzsArr = this.gzlsqk.fgzsArr || []
return fgzsArr.filter((item, index)=>{
return index !== this.isHideData
})
},
因为这样数值其实是改变了,所以tooltip还要返回之前的数据