javascript
chart.js
shashisp
la source
la source
Vous devez modifier le code comme: dans chart.Doughnut.defaults
labelFontFamily : "Arial",
labelFontStyle : "normal",
labelFontSize : 24,
labelFontColor : "#666"
puis en fonction drawPieSegments
ctx.fillText(data[0].value + "%", width/2 - 20, width/2, 200);
Voir ce pull: https://github.com/nnnick/Chart.js/pull/35
voici un violon http://jsfiddle.net/mayankcpdixit/6xV78/ implémentant le même.
Aucune des autres réponses ne redimensionne le texte en fonction de la quantité de texte et de la taille du beignet. Voici un petit script que vous pouvez utiliser pour placer dynamiquement n'importe quelle quantité de texte au milieu, et il le redimensionnera automatiquement.
Exemple: http://jsfiddle.net/kdvuxbtj/
Il faudra n'importe quelle quantité de texte dans la taille du beignet parfaite pour le beignet. Pour éviter de toucher les bords, vous pouvez définir un rembourrage latéral comme un pourcentage du diamètre de l'intérieur du cercle. Si vous ne le définissez pas, la valeur par défaut est 20. Vous avez également la couleur, la police et le texte. Le plugin s'occupe du reste.
Le code du plugin commencera avec une taille de police de base de 30px. De là, il vérifiera la largeur du texte et le comparera au rayon du cercle et le redimensionnera en fonction du rapport de largeur du cercle / texte.
Il a une taille de police minimale par défaut de 20 px. Si le texte dépasse les limites à la taille de police minimale, il encapsulera le texte. La hauteur de ligne par défaut lors de l'habillage du texte est de 25 px, mais vous pouvez la modifier. Si vous définissez la taille de police minimale par défaut sur false, le texte deviendra infiniment petit et ne sera pas enveloppé.
Il a également une taille de police maximale par défaut de 75px au cas où il n'y aurait pas assez de texte et que le lettrage serait trop grand.
Ceci est le code du plugin
Et vous utilisez les options suivantes dans votre objet graphique
Merci à @Jenna Sloan pour l'aide avec les mathématiques utilisées dans cette solution.
la source
Voici un exemple nettoyé et combiné des solutions ci-dessus - réactif (essayez de redimensionner la fenêtre), prend en charge l'auto-alignement de l'animation, prend en charge les info-bulles
https://jsfiddle.net/cmyker/u6rr5moq/
MISE À JOUR 17.06.16:
Même fonctionnalité mais pour la version 2 de chart.js:
https://jsfiddle.net/cmyker/ooxdL2vj/
la source
Uncaught TypeError: Cannot read property 'extend' of undefined
des idées?J'éviterais de modifier le code chart.js pour ce faire, car c'est assez facile avec du CSS et du HTML classiques. Voici ma solution:
HTML:
CSS:
La sortie ressemble à ceci:
la source
Cela fonctionne aussi de mon côté ...
la source
Base sur la réponse @ rap-2-h, voici le code pour utiliser le texte sur un graphique en anneau sur Chart.js pour une utilisation dans un tableau de bord comme. Il a une taille de police dynamique pour une option réactive.
HTML:
Scénario:
Voici l'exemple de code.try pour redimensionner la fenêtre. http://jsbin.com/wapono/13/edit
la source
Vous pouvez utiliser css avec un positionnement relatif / absolu si vous le souhaitez réactif. De plus, il peut gérer facilement la multi-ligne.
https://jsfiddle.net/mgyp0jkk/
la source
Ceci est basé sur la mise à jour de Cmyker pour Chart.js 2. (publiée comme une autre réponse car je ne peux pas encore commenter)
J'ai eu un problème avec l'alignement du texte sur Chrome lorsque la légende est affichée car la hauteur du graphique ne l'inclut pas, donc elle n'est pas correctement alignée au milieu. Correction de cela en tenant compte de cela dans le calcul de fontSize et textY.
J'ai calculé le pourcentage à l'intérieur de la méthode plutôt qu'une valeur définie car j'en ai plusieurs sur la page. L'hypothèse est que votre graphique n'a que 2 valeurs (sinon quel est le pourcentage de? Et que la première est celle pour laquelle vous voulez afficher le pourcentage. J'ai également un tas d'autres graphiques, donc je vérifie type = donut. J'utilise uniquement des beignets pour afficher les pourcentages, donc cela fonctionne pour moi.
La couleur du texte semble un peu hasardeuse en fonction de l'ordre dans lequel les choses se déroulent, etc., donc j'ai rencontré un problème lors du redimensionnement selon lequel le texte changerait de couleur (entre le noir et la couleur principale dans un cas, et la couleur secondaire et le blanc dans un autre). Je "sauvegarde" quel que soit le style de remplissage existant, dessine le texte (dans la couleur des données primaires) puis restaure l'ancien style de remplissage. (La préservation de l'ancien style de remplissage ne semble pas nécessaire, mais on ne sait jamais.)
https://jsfiddle.net/g733tj8h/
Afficher l'extrait de code
la source
Vous pouvez également coller le code de mayankcpdixit dans l'
onAnimationComplete
option:Le texte sera affiché après l'animation
la source
save
méthodeJe crée une démo avec 7 jQueryUI Slider et ChartJs (avec du texte dynamique à l'intérieur)
DÉMO DANS JSFIDDLE
la source
La réponse de @ rap-2-h et @Ztuons Ch ne permet pas à l'
showTooltips
option d'être active, mais ce que vous pouvez faire est de créer et de superposer un deuxièmecanvas
objet derrière celui qui rend le graphique.La partie importante est le style requis dans les divs et pour l'objet canvas lui-même afin qu'ils s'affichent les uns sur les autres.
Voici le jsfiddle: https://jsfiddle.net/68vxqyak/1/
la source
@Cmyker, excellente solution pour chart.js v2
Une petite amélioration: il est logique de vérifier l'ID de canevas approprié, voir l'extrait de code modifié ci-dessous. Sinon, le texte (c'est-à-dire 75%) est également rendu au milieu d'autres types de graphiques dans la page.
Puisqu'une légende (voir: http://www.chartjs.org/docs/latest/configuration/legend.html ) agrandit la hauteur du graphique, la valeur de la hauteur doit être obtenue par le rayon.
la source
Tout d'abord, félicitations pour avoir choisi Chart.js! Je l'utilise sur l'un de mes projets actuels et je l'adore absolument - il fait parfaitement le travail.
Bien que les étiquettes / info-bulles ne fassent pas encore partie de la bibliothèque, vous voudrez peut-être jeter un coup d'œil à ces trois pull requests:
Et, comme Cracker0dks l'a mentionné, Chart.js utilise
canvas
pour le rendu afin que vous puissiez également implémenter vos propres info-bulles en interagissant directement avec lui.J'espère que cela t'aides.
la source
La solution d'Alesana fonctionne très bien pour moi en général, mais comme d'autres, je voulais pouvoir spécifier où se produisent les sauts de ligne. J'ai fait quelques modifications simples pour envelopper les lignes aux caractères '\ n', tant que le texte est déjà enveloppé. Une solution plus complète forcerait le retour à la ligne s'il y a des caractères '\ n' dans le texte, mais je n'ai pas le temps pour le moment de faire fonctionner cela avec le dimensionnement des polices. Le changement se centre également un peu mieux horizontalement lors de l'enrubannage (évite les espaces de fuite). Le code est ci-dessous (je ne peux pas encore publier de commentaires).
Ce serait cool si quelqu'un mettait ce plug-in sur GitHub ...
la source