2016-07-29 38 views
2

我使用chartJS顯示2個或有時3個數據集的數據。計算ChartJS中的工具提示中的值

我可以這樣做,它不僅顯示tooltipItem.yLabel,而且還顯示總金額爲yLabel (dataset1/(dataset1+dataset2))的百分比? 我想把這個值放在afterLabel

ChartJS選項代碼:

tooltips : { 

    callbacks : { 

     label : function(tooltipItem, data) { 
      return data.datasets[tooltipItem.datasetIndex].label + ': ' + tooltipItem.yLabel; 
     }, 
     afterLabel : function(tooltipItem, data) { 
      return dataset1/(dataset1+dataset2); 
     }, 
    } 
} 

我的 'Y' 數據集的數字陣列。 X數據集是日期數組。 我似乎無法弄清楚chart.min.js如何使用這些值。

回答

3

我設法做我想做的,謝謝@Kubilay Karpat爲我帶來了一個想法,即如何找到需要的值。我會+代表你,但我沒有足夠的力量去做。

afterLabel : function(tooltipItem, data) { 
    var total = 0; 
    total = parseInt(data.datasets[0].data[tooltipItem.index]) + parseInt(data.datasets[1].data[tooltipItem.index]);      
    var percentage = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]/total * 100; 
    var percentage = percentage.toFixed(2); 
    return percentage + " %"; 
}, 
1

是的,你可以。您只需遍歷所有數據集並對與您的索引編號相對應的值進行求和。然後你可以將你的數字分成這個數字。下面的代碼工作對我來說:

afterLabel: function(tooltipItem, data){ 
    var total = 0; 
    for (i = 0; i < data.datasets.length; i++) { 
    total += data.datasets[i].data[tooltipItem.datasetIndex]; 
    } 
    var percentage = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index]/total * 100; 
    var percentage = percentage.toFixed(2); // Trim decimal part 
    return "Percentage: %" + percentage; 
} 

而且,接下來的部分看起來像多餘的,因爲這個默認的工具提示標籤的格局。

label : function(tooltipItem, data) { 
     return data.datasets[tooltipItem.datasetIndex].label + ': ' + tooltipItem.yLabel; 
    }, 

,如果你喜歡修剪/樓/小區的百分比一樣在我的例子,你可能要考慮的是,百分比之和可能不是在你的圖表等於100。

+0

感謝您的努力,但那不是我所需要的。正如我所說的,我有2個數據組。所以每一天,Y軸上有2個點。 我想要標籤說Y點1懸停/(Y點1懸停+ Y點2)* 100. 因此,基本上,它應該是Y點1%+ Y點2%== 100% –