मैं अपनी साइट पर चार्ट की एक श्रृंखला खींचने के लिए चार्ट.जेएस का उपयोग कर रहा हूं और मैंने अलग-अलग चार्ट आसानी से आकर्षित करने के लिए एक सहायक विधि लिखी है:चार्ट.जेएस में डोनट चार्ट में एक लेबल जोड़ना प्रत्येक चार्ट में सभी मानों को दिखाता है
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
}
});
}
drawChart() विधि के लिए अंतिम पैरामीटर में वह लेबल होता है जो चार्ट के मध्य में जोड़ा जाना चाहिए। Chart.pluginService.register
हिस्सा वह कोड है जो लेबल खींचता है। समस्या यह है कि जब मैं drawChart विधि को कई बार निष्पादित करता हूं (मेरे मामले में तीन बार) और विधि निष्पादन में प्रत्येक चार्ट के लेबल की आपूर्ति करता है, तो सभी तीन लेबल प्रत्येक चार्ट पर एक दूसरे के शीर्ष पर दिखाए जाते हैं। मुझे संबंधित लेबल में प्रत्येक लेबल को प्रदर्शित करने की आवश्यकता है। लेबल के अलावा, अन्य सभी पैरामीटर सही ढंग से संभाले जाते हैं।
मैं इसे कैसे प्राप्त करूं?
कमाल, धन्यवाद! –