2015-11-17 114 views
1

我正在使用Highstock隨時間顯示幾個系列的應用程序。這些系列是堆疊的。標籤切換並調整大小後在堆積列上的額外標籤

有了大量的數據點,數據標籤可能會變得雜亂無章。我添加了一個複選框,用來切換yaxisstackLabels.enabled屬性如下:

function toggleDataLabels(enableDataLabels) { 
    var chart = $('#container').highcharts(); 

    chart.yAxis.forEach(function (axis) { 
     axis.update({ 
      stackLabels: { 
       enabled: enableDataLabels 
      } 
     }); 
    }); 
}; 

可正常工作。詢問時隱藏。

我面臨的問題是,在將屬性設置爲false後又回到true那麼圖表調整大小後,會在畫布上添加一堆額外的數據標籤。

此錯誤被激活後,您可以通過圖例隱藏所有系列,標籤仍然在畫布上。

我曾嘗試:
- 堆棧後,每個系列設置爲true
禁用數據標籤 - 編程設定/調用重繪,迴流的setSize
- axis.update在X和Y兩個
- 和幾個其他哈克方法

沒有我試過可以得到這些額外的數據標籤消失。

看看這個小提琴http://jsfiddle.net/d84dgrs9/(有點粗糙,但它得到的點對面)
步驟產生錯誤:
- 選擇:從範圍選擇1M到減少混亂
- 取消切換數據標籤隱藏數據標籤
- 選中切換數據標籤以顯示數據標籤
- 使用垂直滑塊調整窗格大小
BOOM!各種額外的標籤。

任何洞察力都會令人驚歎。也許這是回報高地圖bug跟蹤器的問題。

回答

1

奇怪的問題。我認爲它可能值得作爲一個錯誤報告。

無論如何,我找到了解決方法。如果您使用CSS隱藏/顯示標籤而不是高級選項,則額外標籤不會再出現。作爲額外的好處,它運行得更快。

function toggleDataLabels(enableDataLabels) { 
    if (enableDataLabels) 
     $('g.highcharts-stack-labels').css('visibility', 'visible'); 
    else 
     $('g.highcharts-stack-labels').css('visibility', 'hidden'); 
}; 

JSFiddle

+0

真棒溶液!!我絕對是在想這個。我已經將這個報告給他們的bug跟蹤器。我還包括你的解決方法。 – kingkode