接上篇文章,双对数轴展示展示看起来是没什么问题了,但经过自测发现,x坐标为0的时候,这条数据不展示了,echarts把x===0的数据给过滤了。
值为0或负数时会显示异常,因为负数和0没有对数,这是定义,也是公理。
知道了原因后我们就需要来对数值0做特殊处理,下面采取了一种转化的方式:
把0转化成一个很接近于0的数值,注意要处理几个地方:x轴,以及tooltip提示,和series的data里横坐标x都要处理,这里我处理后的数据为0.1,代码如下:
xAxis: {
type: 'log',
max: 1000000,
min: 0.1,
axisLabel: {
formatter(value: number) {
if (value === 0.1) return 0;
return convertToPower10(value);
},
},
},
series = allResult?.allColumn
?.filter((col: string) => {
return col.includes(type);
})
.map((name: string, index: any) => ({
name,
type: 'line',
data: allResult?.Result[name].map((item: string, index: any) => {
if (allResult?.Result?.step[index] === 0) {
return [0.1, item];
}
return [allResult?.Result?.step[index], item];
}),
smooth: true,
showSymbol: false,
lineStyle: {
width: 0.8,
},
itemStyle: {
color: colors[index],
},
}));
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'cross',
z: 10,
},
formatter: (params: any) => {
let res = '';
params.forEach((param: any) => {
res += `<br/>${param.seriesName} : ${param.value[1]}`;
});
return res;
},
},
到此,完美解决了对数轴坐标为0的问题🎉~