柱狀圖值與 y 軸起點(diǎn)值相同時艺沼,柱狀圖不會顯示,如果需要顯示叽赊,可以給柱狀圖設(shè)置最小高度
使用 barMinHeight 屬性給柱狀圖設(shè)置最小高度
y軸起點(diǎn)為0時
// 設(shè)置最小高度 10
const barData = [10, 20, 30]
series:{
type: 'bar',
data: barData,
barMinHeight: 10,
}
以上寫法只適用于 y 軸起點(diǎn)為 0 的情況捕儒,y 軸起點(diǎn)不為 0 的時候,比如自適應(yīng)坐標(biāo)軸起點(diǎn)時伍掀,設(shè)置的 10,有時候會看不到暇藏,或者表現(xiàn)的高度不對蜜笤。
y軸起點(diǎn)不為 0 時,需要計算起點(diǎn)盐碱,再加上需要顯示的最小高度
// 設(shè)置最小高度 3
renderBarMinHeight(barMinHeight = 3) {
// 獲取渲染的 chart 示例
const chart = this.$refs.echart.getInstance();
const option = chart.getOption();
const series = option.series;
const yAxis = option.yAxis;
if (yAxis?.length) {
yAxis.forEach((axis, idx) => {
const serie = series.find((item) => item.yAxisIndex === idx) || series[0];
if (serie.type === 'bar') {
// _extent 里面是 y 軸的最小值和最大值把兔,格式如 [2,100]
const { _extent: yAxisScale } = chart.getModel().getComponent('yAxis', idx).axis.scale;
const yMin = yAxisScale[0];
// 將 y 軸上的點(diǎn)轉(zhuǎn)為 px 長度值,坐標(biāo)原點(diǎn)為左上角瓮顽,越往下县好,px 越大,barMinHeight 是從 y 軸為 0 處開始計算
// y 軸 0 點(diǎn)距離左上角坐標(biāo)原點(diǎn)的高度
const zeroPx = chart.convertToPixel({ yAxisIndex: idx }, 0);
// y 軸起點(diǎn)點(diǎn)距離左上角坐標(biāo)原點(diǎn)的高度
const minPx = chart.convertToPixel({ yAxisIndex: idx }, yMin);
// zeroPx - minPx: y 軸從 0 到起點(diǎn)暖混,被隱藏的高度缕贡, 加上 barMinHeight,顯示出來的最小高度即為設(shè)置的最小高度
serie.barMinHeight = zeroPx - minPx + barMinHeight;
}
});
}
chart.setOption({ series });
}
以上動態(tài)計算的高度拣播,在圖表渲染完成后晾咪,再調(diào)用。在 vue 中贮配,可在 setOption 中谍倦,在渲染后的 $nextTick 里面進(jìn)行調(diào)用。