多個柱狀圖重疊顯示問題 jQuery.flot

 
1.多個柱狀圖並列顯示重疊問題再現,如下圖情形:
2.分析出現重疊的原因
 
jquery.flot.js源碼部分:
barWidth 假設爲1
align 默認值的 center 座標位置在x=-1處 (這裏取得是柱狀圖的中心位置),left 座標位置 在x=0處,right座標位置 在x=-0.5處
barWidth 寬度爲1,如此的相對位置必定有0.25的重疊區域。
            switch (series.bars.align) {
                case "left":
                    barLeft = 0;
                    break;
                case "right":
                    barLeft = -series.bars.barWidth;
                    break;
                default:
                    barLeft = -series.bars.barWidth / 2;
            }
 
 
3.解決重疊問題的辦法
修改源碼適應多個柱狀圖並列顯示
 
/*jquery.flot.js自己卻重新給barLeft賦值了 ,根據條形圖的寬度需求來改
*/            switch (series.bars.align) {
                case "left":
                    barLeft = series.bars.barWidth / 2;
                    break;
                case "right":
                    barLeft = -series.bars.barWidth-series.bars.barWidth / 2;
                    break;
                default:
                    barLeft = -series.bars.barWidth / 2;
            }
 右邊向右移動半個寬度,左邊向左邊移動半個寬度。
4.這樣並排顯示效果就好了
5.但會出現一個新的hover問題
 
6.分析hover問題
鼠標移上去,出現的參數的柱狀圖還是有偏移
 
align 默認值的 center 座標位置在x=-1處 (這裏取得是柱狀圖的中心位置),left 座標位置 在x=0處,right座標位置 在x=-0.5處 ,而hover的相對位置還是默認沒有改。
 
7.解決hover問題的辦法
 
       switch (series.bars.align) {
                case "left":
                    barLeft = 0;
                    break;
                case "right":
                    barLeft = -series.bars.barWidth;
                    break;
                default:
                    barLeft = -series.bars.barWidth / 2;
            }
 
 
/*mouseover()的位置,也要與上面的條形圖在同一位置。
 */         switch (series.bars.align) {
            case "left":
                barLeft = series.bars.barWidth / 2;
                break;
            case "right":
                barLeft = -series.bars.barWidth-series.bars.barWidth / 2;
                break;
            default:
                barLeft = -series.bars.barWidth / 2;
            }
8.這樣就正常了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章