I created a scatter chart by using charts.js in my Django project. It is working clearly but in the toolbox, the legends name does not show just number is displaying. How can I display it?
I want to display it as: Argentina(44015314.68,28)
my code:
var bubbleChart = document.getElementById('mybubbleChart').getContext('2d') var myBubbleChart = new Chart(bubbleChart,{ type: 'scatter', data: { datasets:[{ label: name_1, data:[{x:x_1,y:y_1}], backgroundColor:"#716aca" },{ label: name_2, data:[{x:x_2,y:y_2}], backgroundColor:"#d643ad" },{ label: name_3, data:[{x:x_3,y:y_3}], backgroundColor:"#2ec3be" },{ label: name_4, data:[{x:x_4,y:y_4}], backgroundColor:"#2ec34e" }, { label: name_5, data:[{x:x_5,y:y_5}], backgroundColor:"#decb3e" }, ], }, options: { responsive: true, maintainAspectRatio: false, legend: { position: 'bottom', }, tooltip: { isHtml: false }, elements: { point: { radius: 10, hoverRadius: 15, } }, scales: { yAxes: [{ ticks: { beginAtZero:true }, }], xAxes: [{ ticks: { beginAtZero:true }, }] }, } });
Advertisement
Answer
You can achieve this by using a custom callback to alter the text of the tooltip like so:
options: { tooltips: { callbacks: { label: (tooltipItem, data) => (`${data.datasets[tooltipItem.datasetIndex].label}(${tooltipItem.xLabel},${tooltipItem.yLabel})`) } } }
Working example:
var options = { type: 'scatter', data: { datasets: [{ label: '# of Votes', data: [{ x: 5, y: 4 }, { x: 2, y: 7 }, { x: 3, y: 3 }, { x: 3.5, y: 5.5 }], backgroundColor: 'red' }] }, options: { tooltips: { callbacks: { label: (tooltipItem, data) => (`${data.datasets[tooltipItem.datasetIndex].label}(${tooltipItem.xLabel},${tooltipItem.yLabel})`) } } } } var ctx = document.getElementById('chartJSContainer').getContext('2d'); new Chart(ctx, options);
<body> <canvas id="chartJSContainer" width="600" height="400"></canvas> <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.js" integrity="sha512-hZf9Qhp3rlDJBvAKvmiG+goaaKRZA6LKUO35oK6EsM0/kjPK32Yw7URqrq3Q+Nvbbt8Usss+IekL7CRn83dYmw==" crossorigin="anonymous"></script> </body>