ChartJS radar

by Christian Bonato

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.js"></script>
<canvas id="myChart" width="400" height="400"></canvas>

JavaScript

var data = {
    // Change number of labels to test label positioning variation:
    // Including a multi-line label for testing
    labels: ["Eating", ["Drinking", "water"], "Sleeping", "Designing", "Coding", "Cycling"],
    datasets: [
        {
            label: "1",
            data: [65, 59, 90, 81, 56, 55],
            backgroundColor: 'rgba(153, 153, 255, 0.1)'
        },
        {
            label: "2",
            data: [28, 48, 40, 19, 96, 27],
            backgroundColor: 'rgba(255, 153, 153, 0.1)'
        }
    ]
};
var ctx = document.getElementById('myChart').getContext('2d');
var options = {
    scale: {
        pointLabels: {
            // Test label size variation:
	          //fontSize: 50		
        }
    }
};
var myRadarChart = new Chart(ctx, {
    type: 'radar',
    data: data,
    options: options,
});


document.getElementById("myChart").onclick = function (e) {
		    var helpers = Chart.helpers;
        var scale = myRadarChart.scale;
        var opts = scale.options;
        var tickOpts = opts.ticks;
				
        // Position of click relative to canvas.
        var mouseX = e.offsetX;
        var mouseY = e.offsetY;
        
        var labelPadding = 5; // number pixels to expand label bounding box by
        
        // get the label render position
        // calcs taken from drawPointLabels() in scale.radialLinear.js
        var tickBackdropHeight = (tickOpts.display && opts.display) ?
            helpers.valueOrDefault(tickOpts.fontSize, Chart.defaults.global.defaultFontSize)
            + 5: 0;
        var outerDistance = scale.getDistanceFromCenterForValue(opts.ticks.reverse ? scale.min : scale.max);
        for (var i = 0; i < scale.pointLabels.length; i++) {
            // Extra spacing for top value due to axis labels
            var extra = (i === 0 ? tickBackdropHeight / 2 : 0);
            var pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + 5);
            
            // get label size info.
        ...