var chart = new CanvasJS.Chart("chartContainer", {
text: "Zooming Chart with Mouse Scroll"
document.getElementsByClassName("canvasjs-chart-canvas")[1].addEventListener("wheel", function(e){
if(e.clientX < chart.plotArea.x1 || e.clientX > chart.plotArea.x2 || e.clientY < chart.plotArea.y1 || e.clientY > chart.plotArea.y2)
var xValue = Math.round(chart.axisX[0].convertPixelToValue(e.clientX));
var yValue = Math.round(chart.axisY[0].convertPixelToValue(e.clientY));
var axisXViewportMin = chart.axisX[0].get("viewportMinimum"),
axisXViewportMax = chart.axisX[0].get("viewportMaximum"),
axisYViewportMin = chart.axisY[0].get("viewportMinimum"),
axisYViewportMax = chart.axisY[0].get("viewportMaximum"),
axisXMin = chart.axisX[0].get("minimum"),
axisXMax = chart.axisX[0].get("maximum"),
axisYMin = chart.axisY[0].get("minimum"),
axisYMax = chart.axisY[0].get("maximum"),
axisXInterval = chart.axisX[0].interval,
axisYInterval = chart.axisY[0].interval;
var newAxisXViewportMin, newAxisXViewportMax,newAxisYViewportMin, newAxisYViewportMax;
newAxisXViewportMin = axisXViewportMin + (xValue - axisXViewportMin) / axisXInterval;
newAxisXViewportMax = axisXViewportMax - (axisXViewportMax - xValue) / axisXInterval;
newAxisYViewportMin = axisYViewportMin + (yValue - axisYViewportMin) / axisYInterval;
newAxisYViewportMax = axisYViewportMax - (axisYViewportMax - yValue) / axisYInterval;
newAxisXViewportMin = (axisXViewportMin - (xValue - axisXViewportMin) / axisXInterval) >= axisXMin ? (axisXViewportMin - (xValue - axisXViewportMin) / axisXInterval) : axisXMin;
newAxisXViewportMax = (axisXViewportMax + (axisXViewportMax - xValue) / axisXInterval) <= axisXMax ? (axisXViewportMax + (axisXViewportMax - xValue) / axisXInterval) : axisXMax;
newAxisYViewportMin = (axisYViewportMin - (yValue - axisYViewportMin) / axisYInterval) >= axisYMin ? (axisYViewportMin - (yValue - axisYViewportMin) / axisYInterval) : axisYMin;
newAxisYViewportMax = (axisYViewportMax + (axisYViewportMax - yValue) / axisYInterval) <= axisYMax ? (axisYViewportMax + (axisYViewportMax - yValue) / axisYInterval) : axisYMax;
if(newAxisXViewportMin >= axisXMin && newAxisXViewportMax <= axisXMax && (newAxisXViewportMax - newAxisXViewportMin) > (2 * axisXInterval) && newAxisYViewportMin >= axisYMin && newAxisYViewportMax <= axisYMax && (newAxisYViewportMax - newAxisYViewportMin) > (2 * axisYInterval)){
chart.axisX[0].set("viewportMinimum", newAxisXViewportMin, false);
chart.axisX[0].set("viewportMaximum", newAxisXViewportMax, false);
chart.axisY[0].set("viewportMinimum", newAxisYViewportMin, false);
chart.axisY[0].set("viewportMaximum", newAxisYViewportMax);