2016-04-18 1 views
4

Je veux créer un graphique à secteurs avec chartist.js avec des étiquettes (qui sont indiquées dans la légende) ET aussi avec des pourcentages dans le gâteau lui-même.chartist.js camembert avec des étiquettes et pourcentage sur le gâteau

Ceci est le diagramme à secteurs. Je veux ajouter des valeurs en pourcentage aux pièces. http://i.stack.imgur.com/SiIKb.png

Ici (https://gionkunz.github.io/chartist-js/examples.html) est un exemple avec des pourcentages dans le secteur. Mais cela ne fonctionne que si je n'ajoute pas d'étiquettes. L'ajout d'étiquettes aux données (par exemple étiquettes: ['Chien', 'Chat', 'Vache', 'Serpent',],) donne l'affichage "NaN%".

Je veux voir les pourcentages dans la tarte elle-même et mettre aussi des étiquettes (pour la légende) dans les données.

Est-ce possible?

Répondre

3

Vous devez garder un tableau contenant vos étiquettes, et utiliser les labelInterpolationFnc avec deux paramètres pour obtenir l'index et l'utiliser pour obtenir l'étiquette appropriée avec le pourcentage:

var animals = ['Dog','Cat','Cow','Snake']; 

var data = { 
    series: [5, 3, 4] 
}; 

var sum = function(a, b) { return a + b }; 

new Chartist.Pie('.ct-chart', data, { 
    labelInterpolationFnc: function(value, idx) { 
    var percentage = Math.round(value/data.series.reduce(sum) * 100) + '%'; 
    return animals[idx] + ' ' + percentage; 
    } 
}); 

Notez que nous ne devons pas utiliser le labels dans votre tableau de données (seulement la série), sinon le paramètre de valeur dans labelInterpolationFnc sera rempli avec l'étiquette au lieu de la valeur, donc nous n'avons pas pu calculer le pourcentage.

0

ce que vous auriez besoin de faire est de produire l'étiquette par vous-même. Vous devez produire une chaîne comme [Labeltext] + '| '+ [Partager]

Dans mon cas, je créé une variable qui détient la somme totale de tous les éléments de tarte ... appelés [griall] ....

Ensuite, il y a cette fonction qui calcule les parts .. .

\t \t function calcProz(value, griall) { 
 
\t \t \t return Math.round(value/griall * 100) + '%'; 
 
\t \t };

plus tard quand je produis le tableau qui contient les étiquettes que j'utilise cette fonction pour ajouter les pourcentages au texte ...

\t \t chartlabels[i]=dbresult[i].use + ' | ' + calcProz(dbresult[i].gri,griall);

où dbresult [i] .Utilisation est le texte de l'étiquette initiale et dbresult [i] .gri est la valeur qui va au tableau (les deux provenant d'une base de données)

après tout lors de la définition du tableau que vous venez d'ajouter les étiquettes ...

var data = { 
 
\t \t \t \t series: chartdata, 
 
\t \t // \t \t series: [25,16,15, 14, 4,2,1] 
 
\t \t \t \t labels: chartlabels 
 
\t \t 
 
\t \t };

+0

Nous vous remercions de votre temps et vous répondez. Je ne suis pas sûr que nous nous comprenions correctement. J'ai déjà les pourcentages calculés. Ce que je veux, c'est afficher les pourcentages DIRECTEMENT le camembert lui-même et les étiquettes (textes) dans la légende. J'ai essayé votre solution mais il en résulte aussi avoir les pourcentages dans la légende. Était-ce votre intention? – Sabine

+0

Dans ce cas, je suppose que ce ne sera pas votre solution. Ma solution fait simplement les pourcentages derrière le texte de l'étiquette ... (Comme vous le voyez, il y a quelques problèmes de placement ici). juste comme ceci: https://sectorbyte.de/owncloud/index.php/s/QvHmoCXoLj6laTz – user3639832

+0

Je pense que ce qui pourrait être la solution ici est de dessiner les pourcentages comme étiquette et placez-les où vous voulez. Et ajoutez une légende séparée sous ou à côté du graphique. Il y a une preuve de concept si vous suivez ce lien ... https://github.com/gionkunz/chartist-js/issues/21 Je – user3639832