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);