JSFiddle - React, Tailwind, and code Playground
by Leelenaleee
HTML
<body>
<canvas id="chartJSContainer" width="600" height="400"></canvas>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.3.0/chart.js"></script>
</body>
JavaScript
var options = {
type: 'doughnut',
data: {
labels: ["Red"],
datasets: [{
label: '# of Votes',
data: [12],
borderWidth: (ctx) => (ctx.chart.data.datasets[0].data.length === 1 ? 0 : 3),
backgroundColor: ["Red"]
}]
},
options: {
plugins: {
circleAroundPieDoughnut: {
width: 6,
color: 'blue'
}
}
},
plugins: [{
id: 'circleAroundPieDoughnut',
beforeDatasetsDraw: (chart, args, options) => {
if (chart.data.datasets[0].data.length > 1) return;
const {
ctx,
canvas
} = chart;
const {
top,
left,
width,
height
} = chart.chartArea;
const x = left + width / 2;
const y = top + height / 2;
const outerRadius = chart._metasets[0].data[0].outerRadius;
ctx.beginPath()
ctx.arc(x, y, outerRadius + ((options.width || 0) / 2), 0, 2 * Math.PI);
ctx.lineWidth = options.width || 1
ctx.strokeStyle = options.color || '#000';
ctx.stroke();
}
}]
}
var ctx = document.getElementById('chartJSContainer').getContext('2d');
new Chart(ctx, options);