效果图
实现(使用markPoint属性)
let xLength = 15;
let dataAxis = Array.from({ length: xLength }, (item, index) => index);
let data = [];
let rodData = [];
dataAxis.forEach((item, index) => {
data.push(item + 10);
rodData.push({
symbol: 'rect',
symbolSize: [20, 4],
xAxis: item,
yAxis: data[index],
itemStyle: {
color: 'rgba(0,222,255,1)'
}
});
});
option = {
xAxis: {
data: dataAxis,
axisLabel: {
color: '#999'
},
axisTick: {
show: false
},
axisLine: {
show: false
}
},
yAxis: {
axisLine: {
show: false
},
axisTick: {
show: false
},
splitLine: {
show: false
},
axisLabel: {
color: '#999'
}
},
series: [
{
type: 'bar',
itemStyle: {
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
{ offset: 0, color: 'rgba(0,222,255,0.3)' },
{ offset: 1, color: 'rgba(0,222,255,0.8)' }
])
},
data,
barWidth: 20,
markPoint: {
data: rodData
}
}
]
};
ps: 本来是觉得有四种实现方式 【bar、pictorialBar、scatter:这三种方式的data值都为基础bar的data值➗设计稿尺寸比例 ,但是实现起来发现每个柱子顶部的横杠高度会有一些微小的差别,就只有markPoint能完美实现这个效果了==】(不知道是不是还有其他实现方式👀)