ChartJS Line Chart
Multiple Line Chart
by Leelenaleee
HTML
<body>
<canvas id="chartJSContainer" width="600" height="400"></canvas>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.5.1/chart.js"></script>
</body>
CSS
canvas { background-color : #eee;
}
JavaScript
const customTitle = {
id: 'customTitle',
beforeLayout: (chart, args, opts) => {
if (!opts.x.display) {
return;
}
const { ctx } = chart;
ctx.font = opts.x.font || '12px "Helvetica Neue", Helvetica, Arial, sans-serif'
const { width } = ctx.measureText(opts.x.text);
chart.options.layout.padding.right = width * 1.3;
},
afterDraw: (chart, args, opts) => {
const { ctx, scales: { x, y }, chartArea: { top, bottom, left, right } } = chart;
if (opts.x.display) {
ctx.fillStyle = opts.x.color || Chart.defaults.color
ctx.font = opts.x.font || '12px "Helvetica Neue", Helvetica, Arial, sans-serif'
ctx.fillText(opts.x.text, (right + (opts.x.offsetX || 0)), (bottom + ((opts.x.offsetY * -1) || 0)))
}
if(opts.y.display) {
ctx.fillStyle = opts.y.color || Chart.defaults.color
ctx.font = opts.y.font || '12px "Helvetica Neue", Helvetica, Arial, sans-serif'
ctx.fillText(opts.y.text, opts.y.offsetX || 3, (top + ((opts.y.offsetY * -1) || -15)))
}
}
}
const options = {
type: 'line',
data: {
labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
datasets: [
{
label: '# of Votes',
data: [12, 19, 3, 5, 2, 3],
borderWidth: 1
},
{
label: '# of Points',
data: [7, 11, 5, 8, 3, 7],
borderWidth: 1
}
]
},
options: {
layout: {
padding: {
right: 0
}
},
plugins: {
customTitle: {
y: {
display: true,
text: 'Numbers'
},
x: {
display: true,
text: 'Month',
offsetX: 5,
offsetY: 5,
font: '12px Comic Sans MS'
}
}
}
},
plugins: [customTitle]
}
const ctx = document.getElementById('chartJSContainer').getContext('2d');
new Chart(ctx, options);