2016-07-29 73 views
2

Ich verwende chartJS, um Daten mit 2 oder manchmal 3 Datensätzen anzuzeigen.Wert in Tooltip in ChartJS berechnen

Kann ich es so machen, zeigt es nicht nur tooltipItem.yLabel, sondern auch einen Prozentsatz der Gesamtmenge von yLabel (dataset1/(dataset1+dataset2))? Ich möchte diesen Wert in afterLabel setzen.

ChartJS Optionen Code:

tooltips : { 

    callbacks : { 

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

My 'Y' Datensätze Arrays von Zahlen sind. X-Datensatz ist ein Array von Daten. Ich kann nicht herausfinden, wie chart.min.js diese Werte nimmt.

Antwort

3

Ich schaffte es zu tun, was ich wollte, danke @Kubilay Karpat für mich zu einer Idee, wie man benötigte Werte zu finden. Ich würde dich repäsentieren, aber ich habe nicht genug, um das zu tun.

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

Ja, Sie können. Sie müssen lediglich alle Datensätze durchlaufen und die Werte addieren, die Ihrer Indexnummer entsprechen. Dann können Sie Ihre Nummer auf diese Summe aufteilen. Der folgende Code funktioniert für mich:

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; 
} 

Auch folgender Teil scheint wie überflüssig, da dies das Standardmuster des Tooltip Label ist.

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

Und wenn Sie mögen/Boden trimmen/ceil den Prozentsatz wie in meinem Beispiel könnten Sie die Tatsache, dass Summen Prozentsatz berücksichtigen wollen nicht zu 100 in Ihrem Diagramm gleich sein könnten.

+0

Danke für die Mühe, aber das ist nicht genau das, was ich brauche. Wie gesagt, ich habe 2 Datensätze. So gibt es jeden Tag 2 Punkte auf der Y-Achse. Ich möchte Label sagen Y Punkt1 Hover/(Y Punkt1 Hover + Y Punkt2) * 100. Also, im Grunde sollte es Y Punkt1% + Y Punkt2% == 100% sein –