如何手动实现echarts图的log轴并且保持原比例

因为柱状图的实际数据差距过大,有几十万的,还有几千的,这样少的数据在图上就基本看不到了,所以用了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还要返回之前的数据

效果图如下:


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。