在echarts绘图中当x轴表示日期且数据较多时,此时如果按照echarts的默认配置,则会根据空间剩余的大小自动计算最终显示有限的几个不重叠的label
1、如果必须要显示其实日期和终止日期
xAxis: {
axisLabel: {
showMinLabel: true,
showMaxLabel: true
}
}
2、由于画布限制,只显示其实和种植日期,或者再加上中间日期
interval 属性表示间隔多少项展示一个刻度,直接取一半就会只显示起始日期,终止日期,中间日期
xAxis: {
axisLabel: {
showMinLabel: true,
showMaxLabel: true,
interval: Math.ceil(data.length / 2)
}
}
3、label也可以进行格式化
xAxis: {
data: data,
axisLabel: {
formatter (val, i) {
if (i === 0 || i === data.length - 1 || i === Math.ceil(data.length / 2)) {
return val
}
return ''
}
}
}
// 将需要的刻度返回,其余的赋值为''
// 同时也可以对最终值进行格式化 如:moment(val).format('YYYY-MM-DD')等
4、如果要限制起始和终止刻度限制在轴线范围内,不允许超过轴线
此时需要用到echarts的富文本模式rich
// 左右两个位置需要调整,需要定义两个类名
// 这里样式可以用padding, 也可以用宽度和对齐方式来做(我用这种),
const richCss = {
start: {
width: 145,
align: 'right'
},
end: {
width: 145,
align: 'left'
}
}
这样我们就有了两个类名, 再通过第二步的formatter函数的方法将其通过富文本的方式渲染
xAxis: {
data: data,
axisLabel: {
formatter (val, i) {
if (i === 0) {
return `{start| ${val}}`
} else if (i === data.length - 1) {
return `{end| ${val}}`
} else if (i === Math.ceil(data.length / 2)) {
return val
}
return ''
},
rich: richCss
}
}