Comment afficher les valeurs de données de graphique à secteurs de chaque tranche dans chart.js
Je suis en utilisant Chart.js pour le dessin graphique à secteurs dans ma page php.J'ai trouvé l'info-bulle indiquant chaque tranche de valeurs.
Mais je veux afficher ces valeurs comme l'image ci-dessous.
Je ne sais pas comment faire avec chart.js.
S'il vous plaît aider moi.
Mon code Javascript:
function drawPie(canvasId,data,legend){
var ctx = $("#pie-canvas-" + canvasId).get(0).getContext("2d");
var piedata = [];
$.each(data,function(i,val){
piedata.push({value:val.count,color:val.color,label:val.status});
});
var options =
{
tooltipTemplate: "<%= Math.round(circumference /6.283 * 100) %>%",
}
var pie = new Chart(ctx).Pie(piedata,options);
if(legend)document.getElementById("legend").innerHTML = pie.generateLegend();
}
code php:
printf('<table><tr>');
echo '<td style="text-align: right;"><canvas id="pie-canvas-'
. $canvasId
. '" width="256" height="256" ></canvas></td><td style="text-align: left;width:360px;height:auto" id="legend" class="chart-legend"></td></tr></table>';
echo '<script type="text/javascript">drawPie('
. $canvasId
. ', '
. $data3
.', '
. $legend
. ');</script>';
source d'informationauteur Nithya.K
Vous devez vous connecter pour publier un commentaire.
De ce que je sais je ne crois pas que Chart.JS a toutes les fonctionnalités pour aider pour la rédaction de texte sur un graphique en secteurs. Mais cela ne signifie pas que vous ne pouvez pas le faire vous-même en JavaScript natif. Je vais vous donner un exemple sur la façon de faire, ci-dessous est le code pour dessiner le texte pour chaque segment dans le diagramme circulaire:
Un Graphique a un tableau de segments stockées dans
PieChart.segments
nous pouvons regarder lesstartAngle
etendAngle
de ces secteurs afin de déterminer l'angle entre les où le texte seraitmiddleAngle
. Ensuite nous diriger dans cette direction parRadius/2
pour être dans le milieu de la graphique en radians.Dans l'exemple ci-dessus, d'autres opérations de nettoyage sont réalisées, en raison de la position de texte élaboré en
fillText()
étant le coin en haut à droite, nous avons besoin d'obtenir des valeurs de décalage pour corriger ça. Et enfintextSize
est déterminé en fonction de la taille du graphique lui-même, plus le tableau, le plus grand le texte.Violon Exemple
Avec une légère modification, vous pouvez modifier le nombre discret de valeurs pour un jeu de données dans le percentiles dans un graphe. Pour ce faire obtenir le montant total des
value
des éléments dans votre jeu de données, appelez cetotalValue
. Ensuite, sur chaque segment, vous pouvez trouver l' % en faisant:La section ici
myPieChart.segments[i].value/totalValue
est ce que calcule le pourcentage que le segment se place dans le graphique. Par exemple, si le segment en cours ayant une valeur de50
et la totalValue était200
. Ensuite, le pourcentage que le segment a pris serait:50/200 => 0.25
. Le reste est à le rendre agréable.0.25*100 => 25
puis nous ajoutons une%
à la fin. Pour tout nombre pour cent carreaux j'ai arrondi à l'entier le plus proche, bien que peut peut conduire à des problèmes de précision. Si nous avons besoin de plus de précision, vous pouvez utiliser.toFixed(n)
pour enregistrer décimales. Par exemple, nous pourrions le faire pour enregistrer une seule décimale en cas de besoin:Violon Exemple de percentile avec les décimales
Violon Exemple de percentile avec des entiers
Pour Chart.js 2.0 et, le Graphique en données de l'objet a changé. Pour ceux qui sont à l'aide de Chart.js 2.0+, ci-dessous est un exemple de l'utilisation de HTML5 Canvas
fillText()
méthode pour afficher les données de valeur à l'intérieur de la tarte. Le code fonctionne pour un graphique en anneau, aussi, avec la seule différence étanttype: 'pie'
contretype: 'doughnut'
lors de la création du graphique.Script:
Javascript
HTML
jsFiddle
J'ai trouvé un excellent
Chart.js
plugin qui fait exactement ce que vous voulez:https://github.com/emn178/Chart.PieceLabel.js
Vous pouvez faire usage de PieceLabel plugin pour Chart.js.
{ pieceLabel: { mode: pourcentage de précision: 2 } }
Démo |
La Documentation
@Hung Tran réponse fonctionne parfaitement. Comme une amélioration, je dirais ne pas l'affichage des valeurs qui sont à 0. Disons que vous disposez de 5 éléments et 2 sont 0 et le reste d'entre eux ont des valeurs, la solution ci-dessus affiche 0 et 0%. Il est préférable de filtre avec un pas égal à 0 check!
Mis à jour le code ci-dessous:
Façon la plus simple de le faire avec Chartjs. Ajoutez juste en dessous de la ligne dans les options:
Bonne chance