javascript
chart.js
Shashisp
quelle
quelle
Sie müssen den Code wie folgt ändern: in chart.Doughnut.defaults
labelFontFamily : "Arial",
labelFontStyle : "normal",
labelFontSize : 24,
labelFontColor : "#666"
und dann in Funktion drawPieSegments
ctx.fillText(data[0].value + "%", width/2 - 20, width/2, 200);
Siehe diesen Pull: https://github.com/nnnick/Chart.js/pull/35
Hier ist eine Geige http://jsfiddle.net/mayankcpdixit/6xV78/ , die dasselbe implementiert.
Keine der anderen Antworten ändert die Größe des Textes basierend auf der Textmenge und der Größe des Donuts. Hier ist ein kleines Skript, mit dem Sie eine beliebige Textmenge dynamisch in der Mitte platzieren können. Die Größe wird automatisch geändert.
Beispiel: http://jsfiddle.net/kdvuxbtj/
Es wird jede Menge Text in dem Donut benötigt, der perfekt für den Donut geeignet ist. Um ein Berühren der Kanten zu vermeiden, können Sie eine Seitenpolsterung als Prozentsatz des Durchmessers der Innenseite des Kreises festlegen. Wenn Sie es nicht einstellen, wird es standardmäßig auf 20 gesetzt. Sie auch die Farbe, die Schriftart und den Text. Das Plugin kümmert sich um den Rest.
Der Plugin-Code beginnt mit einer Basisschriftgröße von 30px. Von dort aus wird die Breite des Texts überprüft, mit dem Radius des Kreises verglichen und die Größe basierend auf dem Verhältnis von Kreis zu Textbreite geändert.
Die Standardschriftgröße beträgt mindestens 20 Pixel. Wenn der Text bei der Mindestschriftgröße die Grenzen überschreitet, wird der Text umbrochen. Die Standardzeilenhöhe beim Umbrechen des Texts beträgt 25 Pixel, Sie können sie jedoch ändern. Wenn Sie die Standard-Mindestschriftgröße auf false setzen, wird der Text unendlich klein und wird nicht umgebrochen.
Es hat auch eine maximale Standardschriftgröße von 75px, falls nicht genügend Text vorhanden ist und die Beschriftung zu groß wäre.
Dies ist der Plugin-Code
Und Sie verwenden die folgenden Optionen in Ihrem Diagrammobjekt
Dank an @Jenna Sloan für die Hilfe bei der in dieser Lösung verwendeten Mathematik.
quelle
Hier finden Sie ein bereinigtes und kombiniertes Beispiel für die oben genannten Lösungen - reaktionsschnell (versuchen Sie, die Größe des Fensters zu ändern), unterstützt die Selbstausrichtung der Animation und unterstützt QuickInfos
https://jsfiddle.net/cmyker/u6rr5moq/
UPDATE 17.06.16:
Gleiche Funktionalität, jedoch für chart.js Version 2:
https://jsfiddle.net/cmyker/ooxdL2vj/
quelle
Uncaught TypeError: Cannot read property 'extend' of undefined
irgendwelche Ideen?Ich würde es vermeiden, den Code von chart.js zu ändern, um dies zu erreichen, da dies mit normalem CSS und HTML ziemlich einfach ist. Hier ist meine Lösung:
HTML:
CSS:
Die Ausgabe sieht folgendermaßen aus:
quelle
Das funktioniert auch an meinem Ende ...
quelle
Basis auf @ rap-2-h Antwort, hier der Code für die Verwendung von Text auf Donut-Diagramm auf Chart.js für die Verwendung in Dashboard wie. Es hat eine dynamische Schriftgröße für die Reaktionsoption.
HTML:
Skript:
Hier der Beispielcode. Versuchen Sie, die Größe des Fensters zu ändern. http://jsbin.com/wapono/13/edit
quelle
Sie können CSS mit relativer / absoluter Positionierung verwenden, wenn Sie möchten, dass es reagiert. Außerdem kann es problemlos mit mehreren Leitungen umgehen.
https://jsfiddle.net/mgyp0jkk/
quelle
Dies basiert auf Cmykers Update für Chart.js 2. (als weitere Antwort veröffentlicht, da ich noch keinen Kommentar abgeben kann)
Ich hatte ein Problem mit der Textausrichtung in Chrome, wenn die Legende angezeigt wird, da die Diagrammhöhe dies nicht enthält und sie daher in der Mitte nicht richtig ausgerichtet ist. Dies wurde behoben, indem dies bei der Berechnung von fontSize und textY berücksichtigt wurde.
Ich habe den Prozentsatz innerhalb der Methode berechnet und nicht einen festgelegten Wert, da ich mehrere davon auf der Seite habe. Es wird davon ausgegangen, dass Ihr Diagramm nur 2 Werte hat (andernfalls wie viel Prozent davon? Und dass der erste derjenige ist, für den Sie den Prozentsatz anzeigen möchten. Ich habe auch eine Reihe anderer Diagramme, also überprüfe ich, ob type = donut. Ich verwende nur Donuts, um Prozentsätze anzuzeigen, damit es für mich funktioniert.
Die Textfarbe scheint ein bisschen ein Hit und Miss zu sein, abhängig von der Reihenfolge, in der die Dinge ausgeführt werden usw. Daher stieß ich beim Ändern der Größe auf ein Problem, dass der Text seine Farbe ändern würde (in einem Fall zwischen Schwarz und Primärfarbe und in einem anderen Fall zwischen Sekundärfarbe und Weiß) Ich "speichere" unabhängig vom vorhandenen Füllstil, zeichne den Text (in der Farbe der Primärdaten) und stelle dann den alten Füllstil wieder her. (Die Beibehaltung des alten Füllstils scheint nicht erforderlich zu sein, aber Sie wissen es nie.)
https://jsfiddle.net/g733tj8h/
Code-Snippet anzeigen
quelle
Sie können auch den Code von mayankcpdixit in die folgende
onAnimationComplete
Option einfügen :Der Text wird nach der Animation angezeigt
quelle
save
MethodeIch erstelle eine Demo mit 7 jQueryUI Slider und ChartJs (mit dynamischem Text)
DEMO IN JSFIDDLE
quelle
Die Antwort von @ rap-2-h und @Ztuons Ch lässt nicht zu, dass die
showTooltips
Option aktiv ist, aber Sie können eine Sekunde erstellen und überlagerncanvas
Objekt hinter dem Objekt .Der wichtige Teil ist das Styling, das in den Divs und für das Canvas-Objekt selbst erforderlich ist, damit sie übereinander gerendert werden.
Hier ist die jsfiddle: https://jsfiddle.net/68vxqyak/1/
quelle
@Cmyker, großartige Lösung für chart.js v2
Eine kleine Verbesserung: Es ist sinnvoll, nach der entsprechenden Canvas-ID zu suchen (siehe das modifizierte Snippet unten). Andernfalls wird der Text (dh 75%) auch in der Mitte anderer Diagrammtypen auf der Seite gerendert.
Da eine Legende (siehe: http://www.chartjs.org/docs/latest/configuration/legend.html ) die Diagrammhöhe vergrößert, sollte der Wert für die Höhe durch den Radius ermittelt werden.
quelle
Zunächst einmal ein großes Lob für die Wahl von Chart.js! Ich benutze es für eines meiner aktuellen Projekte und ich liebe es absolut - es macht den Job perfekt.
Obwohl Beschriftungen / QuickInfos noch nicht Teil der Bibliothek sind, sollten Sie sich diese drei Pull-Anforderungen ansehen:
Und wie Cracker0dks erwähnt, verwendet Chart.js
canvas
zum Rendern verwendet, sodass Sie auch einfach Ihre eigenen Tooltips implementieren können, indem Sie direkt damit interagieren.Hoffe das hilft.
quelle
Die Lösung von Alesana funktioniert im Allgemeinen sehr gut für mich, aber wie andere wollte ich angeben können, wo Zeilenumbrüche auftreten. Ich habe einige einfache Änderungen vorgenommen, um Zeilen mit '\ n' Zeichen zu umbrechen, solange der Text bereits umbrochen wird. Eine vollständigere Lösung würde das Umbrechen erzwingen, wenn der Text '\ n' Zeichen enthält, aber ich habe im Moment keine Zeit, dies mit der Schriftgröße zu tun. Die Änderung zentriert sich beim Wickeln auch horizontal etwas besser (vermeidet Leerzeichen). Der Code ist unten (ich kann noch keine Kommentare posten).
Es wäre cool, wenn jemand dieses Plug-In auf GitHub stellen würde ...
quelle