首页 > 其他分享 >echarts数据过小,log类型无法出现刻度线,并将y轴转为科学计数法

echarts数据过小,log类型无法出现刻度线,并将y轴转为科学计数法

时间:2022-11-07 21:59:20浏览次数:37  
标签:vStr log vArr 计数法 let var params echarts

方法仅供参考

可以更改logBase的值,数值越小刻度线越多,但也会出现,刻度值重复的问题,看各自需要,其次是对数据进行处理,全部变成大于1的数,最后在echarts的图表显示设置中更改回来

注意:对数函数的底数在大于1和大于0小于1时的曲线是沿x轴对称的

// 将y轴数据,鼠标显示框转为科学计数法
// 数据过滤,将y轴数据转为科学计数法,坐标轴和鼠标坐标显示使用
tranNumber: function(v) {
	if(v.axisDimension == 'x') return v.value
    let vStr = ''
    // 处理不同函数
    if(typeof v == 'object') vStr = parseFloat(v.value).toString()
    else vStr = parseFloat(v).toString()
    // 根据处理后的参数内是否是科学计数法来分别转换
    if(vStr.indexOf('e') == -1) {
        let vArr = vStr.split('.')
        let len = vArr[0].length
        let result = 1 + 'e' + (len - this.min_E - 1)
    }else{
        let vArr = vStr.split('e')
        let result = 1 + 'e' + (len - this.min_E)
    }
    return result == '1e0' ? '1' + result
}
// 对应横坐标的纵坐标值显示使用
tranNumber_Y: function(params) {
	let resArr = []
    for(let i = 0;i < params.length;i++) {
		let vStr = parseFlaot(params[i].value[1]).toString()
        let vFlaot = vStr.substring(0,3)
        var axisValueLabel = params[i].axisValueLabel
        var marker = params[i].marker
        var seriesName = params[i].seriesName
        // 根据处理后的参数内是否是科学计数法来分别转换
        if(vStr.indexOf('e') == -1) {
            let vArr = vStr.split('.')
            let lenS = vArr[0].length
            let lenF = vFlaot.split('.')[0].length
            var v = vFlaot / 10 ** (lenF - 1) + 'e' + (lenS - this.min_E - 1)
        }else {
            let vArr = vStr.split('e')
            var v = vFlaot + 'e' + (vArr[1] - this,min_E)
        }
        var str1 = (marker || '') + (seriesName || '') + (seriesName ? ': ' : '') + v
        resArr[i] = str1
    }
    returm `${axisValueLabel}<br />${resArr[0] ? resArr[0] + '<br />' : ''}${resArr[1] ? resArr[1] : ''}`
}

标签:vStr,log,vArr,计数法,let,var,params,echarts
From: https://www.cnblogs.com/shallow-dreamer/p/16867589.html

相关文章