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>
JavaScript
var points = [
{ x1: 35, x2: 75, y: 75}, //line 1
{ x1: 35, x2: 75, y: 35} //line 2
];
var valuesInPixel = [
{ x1: null, x2: null, y: null}, //line 1
{ x1: null, x2: null, y: null} //line 2
];
var chart = new CanvasJS.Chart("chartContainer",{
zoomEnabled: true,
rangeChanged: drawHorizontalLines,
data: [
{
type: "line",
dataPoints: [
{ x: 10, y: 71 },
{ x: 20, y: 55 },
{ x: 30, y: 50 },
{ x: 40, y: 65 },
{ x: 50, y: 95 },
{ x: 60, y: 68 },
{ x: 70, y: 28 },
{ x: 80, y: 34 },
{ x: 90, y: 14 }
]
}
]
});
chart.render();
calculateValuesInPixel();
drawHorizontalLines();
function calculateValuesInPixel(){
for(var i = 0; i < points.length; i++){
valuesInPixel[i].x1 = chart.axisX[0].convertValueToPixel(points[i].x1);
valuesInPixel[i].x2 = chart.axisX[0].convertValueToPixel(points[i].x2);
valuesInPixel[i].y = chart.axisY[0].convertValueToPixel(points[i].y);
}
}
function drawHorizontalLines(){
for(var i = 0; i < valuesInPixel.length; i++){
chart.ctx.beginPath();
chart.ctx.moveTo(valuesInPixel[i].x1, valuesInPixel[i].y);
chart.ctx.lineTo(valuesInPixel[i].x2, valuesInPixel[i].y);
chart.ctx.strokeStyle = "#FF0000";
chart.ctx.stroke();
}
}
$(window).resize(function() {
drawHorizontalLines();
});