<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width,
initial-scale=1.0">
<title>Bar Chart with Custom Plugin Example</title>
<script src=
"https://cdn.jsdelivr.net/npm/chart.js">
</script>
</head>
<body>
<canvas id="barChart" width="400" height="200">
</canvas>
<script>
let ctxBar = document.getElementById('barChart').getContext('2d');
// Sample data for the bar chart
let dataBar = {
labels: ['Category 1',
'Category 2',
'Category 3',
'Category 4',
'Category 5'],
datasets: [{
label: 'Data Set 1',
data: [10, 20, 30, 40, 50],
backgroundColor: 'rgba(75, 192, 192, 0.2)',
borderColor: 'rgba(75, 192, 192, 1)',
borderWidth: 1
}]
};
const labelPlugin = {
afterDatasetsDraw: function (chart) {
let ctx = chart.ctx;
let meta = chart.getDatasetMeta(0);
let barValues = meta.data.map(function (bar) {
return bar._model.y;
});
ctx.save();
ctx.fillStyle = 'black';
ctx.font = '12px Arial';
ctx.textAlign = 'center';
meta.data.forEach(function (bar, index) {
ctx.fillText(barValues[index],
bar._model.x,
barValues[index] - 5);
});
ctx.restore();
}
};
let barChart = new Chart(ctxBar, {
type: 'bar',
data: dataBar,
options: {
plugins: [labelPlugin],
scales: {
y: {
beginAtZero: true
}
}
}
});
</script>
</body>
</html>