始終如一
需求
需要利用 echarts 實現區間柱狀圖,效果如下:

效果來源於:g2-柱狀圖
借鑑 echarts 的 demo
demo 區間實現思路(視覺欺騙)
- 通過 bar 的 series 的
stack
(堆疊)屬性,實現柱子堆疊。 - 再通過 bar 的 series 的 itemStyle 設定作為輔助的柱子隱藏(透明度為 0)。
demo 不滿足的點
- bar 的 label 顯示:未區間
- bar 的 tooltip 顯示:未區間
- 不支援多資料項
最終實現思路
- 通過 bar 的 series 的
stack
(堆疊)屬性,實現柱子堆疊。 - 通過 bar 的 series 的 itemStyle 設定作為輔助的柱子隱藏(透明度為 0)。
- 通過 bar 的 series 的 markPoint 用於顯示區間範圍的最小值。
- 通過將區間資料放入 data, 處理 tooltip 顯示區間數值。
- 考慮到區間[負值,正值]的情況,需要再利用 series 的一個 item 來顯示負值的部分。
實現效果
- 基於最終思路實現效果


- 最終思路縮減版-沒處理負值的效果,即沒有最終實現思路的第 5 步


-
基礎思路實現 - 利用一個新的 series item 的 label 顯示區間範圍的最小值。
-
name + 值為時間 - 利用
type: custom
自定義實現效果
遇到的問題:
- bar stack 堆疊屬性 遇上 軸
type:"time"
時會失效,因此有了 其他方案實現2 探索 - 提供的區間資料含 負值 時,也會異常,無法正常顯示負值的柱子(需要再特殊處理)。如溫度區間,效果來源highcharts-columnrange
程式碼對映
- 最終思路實現:demo1-bar-range-negative.html
- 最終思路縮減版實現:demo1-bar-range-optimize.html
- 基礎思路實現:demo1-bar-range.html
- name + 值為時間:demo2-custom-range-status.html
原始碼
實踐程式碼哦 ?
最後
有更好思路或想法的,請聯絡我,非常歡迎找我探討喲(✨?)。