Maison > Questions et réponses > le corps du texte
Je travaille sur une application volumineuse et il serait très utile de placer des étiquettes sur un graphique à secteurs ou en anneau en dehors du graphique lui-même.
Ce plugin, externalLabels, est exactement ce que je recherche, mais je n'arrive pas à lui faire sortir quoi que ce soit.
Je n'ai pas réussi à trouver un moyen d'accomplir cela en utilisant Chart.js et c'est avec cela que je suis coincé maintenant.
J'ai importé le plugin
从'chartjs-plugin-outerlabels'导入{};
Aimez aussi import 'chartjs-plugin-outerlabels';
Voici un exemple de la façon dont je définis les options du graphique :
function getPieChartOptions(chartTitle: string) { const options: ChartOptions = { responsive: true, plugins: { outerLabels: { fontNormalSize: 12, fontNormalFamily: 'sans-serif', }, legend: { display: true, labels: { usePointStyle: true, font: { family: 'sans-serif', size: 12, } } }, title: { display: true, text: chartTitle, color: 'black', padding: 5, font: { size: 16, family: 'sans-serif', } }, datalabels: { color: 'white', formatter: commas.format, } }, }; return options; }
Voici un exemple de graphique en anneau au sein du projet lui-même :
Si quelqu'un peut aider à faire fonctionner ce plugin, ou a une autre solution pour résoudre ce problème, ce serait grandement apprécié !
P粉7627302052023-11-24 13:22:43
Cela fonctionne pour moi sans le champ datalabels
(car cela nécessite l'installation de la bibliothèque Chartjs-plugin-datalabels.js).
Donc, fondamentalement, ChartOptions
la configuration est similaire à celle que vous avez fournie.
import 'chartjs-plugin-outerlabels'; getPieChartOptions(chartTitle: string) { const options: ChartOptions<'doughnut'> = { responsive: true, plugins: { outerLabels: { fontNormalSize: 12, fontNormalFamily: 'sans-serif', }, legend: { display: true, labels: { usePointStyle: true, font: { family: 'sans-serif', size: 12, }, }, }, title: { display: true, text: chartTitle, color: 'black', padding: 5, font: { size: 16, family: 'sans-serif', }, }, tooltip: { enabled: false, }, }, }; return options; }
Voici comment restituer un graphique sur un élément de canevas.
@ViewChild('MyChart', { static: true }) chart: ElementRef; ngAfterViewInit() { const ctx = this.chart.nativeElement.getContext('2d'); new Chart<'doughnut'>(ctx, { type: 'doughnut', data: { labels: [['Download', 'Sales'], ['In', 'Store', 'Sales'], 'Mail Sales'], datasets: [ { data: [300, 500, 100], }, ], }, options: this.getPieChartOptions('doughnut'), } as ChartConfiguration<'doughnut'>).draw; }