2012-05-26 119 views
12

我在我的網站中實施了highcharts,但從演示的角度來看,這證明具有挑戰性。Highcharts刪除零值標籤

我的數據加載正常,但對於該系列,其中一些值爲零。我想在不爲零時顯示標籤,否則很難閱讀。

我試圖做這樣的事情:

plotOptions: { 
    column: { 
    stacking: 'normal', 
    dataLabels: { 
      enabled: this.value == 0 ? false : true, 
     color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || 'white' } 
} 
} 

但是,這是行不通的。我試過只使用'this'而不是value,但也沒有選擇它。 我一直無法從庫中找到一個默認選項,這將允許我在不必創建自定義代碼的情況下執行此操作。

我已經檢查了一些方法,但零是在系列之一。所以我仍然想爲該組提供非零值的標籤。

我想,當一個人說this.y它需要整個集團的價值,而不是個別系列...

有什麼建議?很明顯,我做錯了什麼!

回答

52

您是否嘗試過使用formatter選件dataLabels?您應該能夠訪問您的數據並確定標籤的外觀。在這裏您可以檢查零點,並返回下面顯示的null

dataLabels: { 
    enabled: true, 
    color: colors[0], 
    style: { 
     fontWeight: 'bold' 
    }, 
    formatter: function() { 
     if (this.y != 0) { 
      return this.y +'%'; 
     } else { 
      return null; 
     } 
    } 
} 

此外,如果您有麻煩搞清楚看看你的數據的一部分,在使用console.log(this)在格式化功能,所以你可以看到你正在使用的對象。

看看這個工作的jsfiddle例如:http://jsfiddle.net/VLmKK/69/

希望幫助!

更新:返回null而不是空字符串,以避免創建Brett註釋中提到的不可見標籤。謝謝。

您也可以在零值上使用not return anything

+0

感謝gizmotivation,我編輯了這個問題來澄清。 – Lievcin

+0

@Lievcin:格式化程序選項可以根據需要單獨處理每個值。我在高圖樣本文件中測試了它。它只從數據點中刪除了0的標籤。您是否可以嘗試一下? – christurnerio

+0

剛剛爲你添加了一個jsfiddle例子。 http://jsfiddle.net/gizmovation/VLmKK/ – christurnerio