Używam Chart.js, aby narysować serię wykresów na mojej stronie i napisałem metodę pomocnika, aby łatwo narysować różne wykresy:Dodanie etykiety do wykresu pączków w Chart.js pokazuje wszystkie wartości na każdym wykresie
drawChart(ctxElement, ctxType, ctxDataLabels, ctxDataSets, midLabel) {
var ctx = ctxElement;
var data = {
labels: ctxDataLabels,
datasets: ctxDataSets
};
Chart.pluginService.register({
beforeDraw: function(chart) {
var width = chart.chart.width,
height = chart.chart.height,
ctx = chart.chart.ctx;
ctx.restore();
var fontSize = (height/114).toFixed(2);
ctx.font = fontSize + "em sans-serif";
ctx.textBaseline = "middle";
var text = midLabel,
textX = Math.round((width - ctx.measureText(text).width)/2),
textY = height/2;
ctx.fillText(text, textX, textY);
ctx.save();
}
});
var chart = new Chart(ctx, {
type: ctxType,
data: data,
options: {
legend: {
display: false
},
responsive: true
}
});
}
Ostatni parametr metody drawChart() zawiera etykietę, która powinna zostać dodana na środku wykresu. Część Chart.pluginService.register
to kod, który rysuje etykietę. Problem polega na tym, że gdy wykonuję metodę drawChart wiele razy (w moim przypadku trzy razy) i dostarczam etykietę każdego wykresu w metodach wykonania, wszystkie trzy etykiety są wyświetlane jeden na drugim na każdym wykresie. Muszę wyświetlić każdą etykietę na odpowiednim wykresie. Wszystkie pozostałe parametry są obsługiwane poprawnie, z wyjątkiem etykiety.
Jak to osiągnąć?
Niesamowite, dziękuję! –