JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<br/>
<!-- Just so that JSFiddle's Result label doesn't overlap the Chart -->
<div id="chartContainer" style="height: 360px; width: 100%;"></div>
<div id="chartContainer1" style="height: 360px; width: 100%;"></div>
JavaScript
var chart = new CanvasJS.Chart("chartContainer", {
theme: "theme2", //theme1
title: {
text: "Position Image over Chart"
},
data: [{
type: "column",
dataPoints: [{
label: "apple",
y: 14
},
{
label: "orange",
y: 20
},
{
label: "banana",
y: 25
},
{
label: "mango",
y: 30
}
]
}]
});
chart.render();
var chart1 = new CanvasJS.Chart("chartContainer1", {
theme: "theme2", //theme1
title: {
text: "Position Image over Chart"
},
data: [{
type: "column",
dataPoints: [{
label: "apple",
y: 14
},
{
label: "orange",
y: 20
},
{
label: "banana",
y: 25
},
{
label: "mango",
y: 30
}
]
}]
});
chart1.render();
var images = [];
var fruits = [];
images.push({
url: "https://i.imgur.com/VXbpsfx.jpg"
});
images.push({
url: "https://i.imgur.com/mUGGAVd.jpg"
});
images.push({
url: "https://i.imgur.com/XhQZyYI.jpg"
});
images.push({
url: "https://i.imgur.com/mIQnOdQ.jpg"
});
//addImages(chart1);
addImages(chart);
function addImages(chart) {
for (var i = 0; i < chart.data[0].dataPoints.length; i++) {
var label = chart.data[0].dataPoints[i].label;
if (label) {
fruits.push($("<img>").attr("src", images[i].url)
.attr("class", label)
.css("display", "none")
.appendTo($("#chartContainer>.canvasjs-chart-container"))
);
}
positionImage(fruits[i], i);
}
}
function positionImage(fruit, index) {
var imageBottom = chart.axisX[0].bounds.y1;
var imageCenter = chart.axisX[0].convertValueToPixel(chart.data[0].dataPoints[index].x);
fruit.width(chart.dataPointWidth * .5);
fruit.height(chart.dataPointWidth * .42);
fruit.css({
"position": "absolute",
"display": "block",
"top": imageBottom - 270,
"left": imageCenter - fruit.width() / 2
});
...