方法仅供参考
可以更改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] : ''}`
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现