Position Image on Marker in Scatter Chart with the help of convertValueToPixel - CanvasJS JavaScript Charts
Position Image on Marker in Scatter Chart with the help of convertValueToPixel - CanvasJS JavaScript Charts
by canvasjs
HTML
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<div id="chartContainer" style="height: 360px; width: 100%; position: relative;"></div>
JavaScript
var imgUrl = "https://i.imgur.com/gzn48eN.png";
var images = [];
var chart = new CanvasJS.Chart("chartContainer", {
title: {
text: "Position Image over Chart"
},
data: [{
type: "scatter",
dataPoints: [
{ x: 10, y: 71 },
{ x: 20, y: 55 },
{ x: 30, y: 50 },
{ x: 40, y: 65 },
{ x: 50, y: 45 }
]
}]
});
chart.render();
addImages(chart);
positionImages();
function addImages(chart){
for (var i = 0; i < chart.data[0].dataPoints.length; i++) {
images.push(new Image(30, 30));
images[i].style.cssText = "position: absolute; pointer-events: none";
images[i].src = imgUrl;
chart.container.appendChild(images[i]);
}
}
//Position image based on dataPoint x & y value
function positionImages() {
for (var i = 0; i < chart.data[0].dataPoints.length; i++) {
images[i].style.top = chart.axisY[0].convertValueToPixel(chart.data[0].dataPoints[i].y) - (images[i].width / 2) + "px";
images[i].style.left = chart.axisX[0].convertValueToPixel(chart.data[0].dataPoints[i].x) - (images[i].width / 2) + "px";
}
}
//Re-position Image on resizing the window
$(window).resize(function() {
positionImages();
});