Chart.js Fügen Sie Kommas zu Tooltip und Y-Achse hinzu
Lesezeit: 5 Minuten
Sam Teng Wong
Ich habe hier in Stackoverflow einige Antworten versucht, aber ohne Erfolg konnte es nicht funktionieren. Ich bin wirklich neu in Chart.js, also haben Sie bitte etwas Geduld mit mir.
das habe ich bisher versucht. Fügen Sie Kommas zu ChartJS-Datenpunkten und diesem Chart.js-Zahlenformat hinzu
funktioniert nicht, wenn es Dezimalstellen gibt – siehe stattdessen andere Antworten
– Lanze
13. Juni 2018 um 22:10 Uhr
Ich habe das vollständige Beispiel mit einem verbesserten Zahlenformatierer angepasst (obwohl Number(x).toLocaleString() könnte besser sein) und eine modernere ES-Syntax: codesandbox.io/s/confident-payne-nrrhr (Die alte jsfiddle-Version wurde seltsam gerendert.)
– Seanf
29. Juni 2019 um 9:51 Uhr
Wie verwende ich dies mit mehreren Datensätzen?
– Benutzer3613026
20. Juni 2021 um 12:16 Uhr
Ich sehe viele übermäßig komplizierte Antworten dafür.
Diese Funktionalität ist bereits in Javascript integriert .toLocaleString(), wir müssen das Rad nicht neu erfinden! Dies berücksichtigt auch Dezimalzahlen.
yAxes: [
{
ticks: {
beginAtZero: true,
userCallback: function(value, index, values) {
return value.toLocaleString(); // this is all we need
}
}
}
]
Das war so eine einfache Lösung! Vielen Dank
– Tom Cockram
23. März 2021 um 11:59 Uhr
Die akzeptierte Antwort würde Kommas nicht an der richtigen Stelle platzieren, wenn Dezimalzahlen verwendet werden
45000,00 würde als 45.000,00 angezeigt
verwendet den folgenden Code für chartjs Version 2.3
Der Tooltip-Callback funktioniert besser, wenn Sie ‘var value = tooltipItem.yLabel;’ anstatt direkt auf die Daten zuzugreifen – da die Daten manchmal .x & .y oder gemischt sind
– Lanze
13. Juni 2018 um 22:24 Uhr
Hier ist die Lösung für mehrere Datensätze: var value = data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];. (Codieren Sie den Dataset-Index nicht als 0 fest.)
– ndbreit
23. Mai 2019 um 9:09 Uhr
Die akzeptierte Antwort funktioniert gut für Diagramme mit einem einzelnen Datensatz pro Spalte, z. B. einem Balkendiagramm. Der hartcodierte Datensatzspeicherort führt dazu, dass die Lösung für Diagramme mit mehreren Datensätzen, wie z. B. Liniendiagramme, fehlschlägt. Die Lösung besteht darin, den hartcodierten Datensatz-Indexspeicherort (data.datasets[0]) mit einem in chartjs integrierten dynamischen Indexspeicherort (data.datasets[tooltipItem.datasetIndex]).
Die Formatierung der Zahlen lässt sich am besten erreichen, indem der Wert gemäß den Gebietsschemaeinstellungen des Benutzers formatiert wird. Dadurch wird sichergestellt, dass Zahlen die richtigen Decorators verwenden (das Tausendertrennzeichen kann ein Komma oder ein Punkt sein, je nach Gebietsschema des Benutzers).
Ich spucke hier nur herum, aber unter der Annahme, dass Daten ein Array sind, könnten Sie nicht einfach eine Schleife durchlaufen und Kommas hinzufügen?
Dies ist meine erste Lösung für das Problem, funktioniert aber zufällig nicht … Ich habe das Problem zufällig gelöst … Ich konnte den Tooltip finden und füge einfach eine Funktion hinzu, die dort das Komma hinzufügt ….
Dies ist meine erste Lösung für das Problem, funktioniert aber zufällig nicht … Ich habe das Problem zufällig gelöst … Ich konnte den Tooltip finden und füge einfach eine Funktion hinzu, die dort das Komma hinzufügt ….
– Sam Teng Wong
6. August 2016 um 4:20 Uhr
Jumpjack
Es gibt eine spezielle Javascript-Funktion, um eine lange Zahl in eine gemäß den Systemeinstellungen formatierte Zahl umzuwandeln: toLocaleString().
Sie können angeben, dass die Bezeichnung jedes Ticks (oder eines bestimmten Ticks, der durch seinen Zahlenindex identifiziert wird) von Ihrer eigenen Funktion erstellt werden muss, indem Sie das Schlüsselwort “callback:” in den Tick-Optionen hinzufügen:
Vor:
ticks: {
max: maxAltitude,
min: 0
}
Nach:
ticks: {
max: maxAltitude,
min: 0, // <--- dont' foget to add this comma if you already have specified ticks options
callback:
function(value, index, valuesArray) {
// value: currently processed tick label
// index of currently processed tick label
// valuesArray: array containing all predefined labels
return value.toLocaleString();
} // Function end
} // Ticks options end
Ohne die Kommentare und ohne unbenutzte Variablen: