Zooming and Panning allows analysis of data at microscopic level and is very useful while plotting graphs with large data sets. All Charts with axis support Zooming & Panning along both X & Y axes in CanvasJS. Given example demonstrates a Line Chart with Zoom / Pan feature. It also includes source code that you can try running locally.
- @{
- Layout = null;
- }
- <!DOCTYPE HTML>
- <html>
- <head>
- <script>
- window.onload = function () {
- var chart = new CanvasJS.Chart("chartContainer", {
- theme: "light2", // "light1", "light2", "dark1", "dark2"
- animationEnabled: true,
- zoomEnabled: true,
- title: {
- text: "Try Zooming and Panning"
- },
- data: [{
- type: "line",
- dataPoints: @Html.Raw(ViewBag.DataPoints)
- }]
- });
- chart.render();
- }
- </script>
- </head>
- <body>
- <div id="chartContainer" style="height: 370px; width: 100%;"></div>
- <script src="https://cdn.canvasjs.com/canvasjs.min.js"></script>
- </body>
- </html>
- using ASPNET_MVC_ChartsDemo.Models;
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.Web.Mvc;
- namespace ASPNET_MVC_ChartsDemo.Controllers
- {
- public class HomeController : Controller
- {
- // GET: Home
- public ActionResult Index()
- {
- double count = 1000, y = 100;
- Random random = new Random();
- List<DataPoint> dataPoints = new List<DataPoint>();
- for (int i = 0; i < count; i++)
- {
- y += random.Next(-10, 11);
- dataPoints.Add(new DataPoint(i, y));
- }
- ViewBag.DataPoints = JsonConvert.SerializeObject(dataPoints);
- return View();
- }
- }
- }
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Runtime.Serialization;
- using System.Web;
- namespace ASPNET_MVC_ChartsDemo.Models
- {
- //DataContract for Serializing Data - required to serve in JSON format
- [DataContract]
- public class DataPoint
- {
- public DataPoint(double x, double y)
- {
- this.X = x;
- this.Y = y;
- }
- //Explicitly setting the name to be used while serializing to JSON.
- [DataMember(Name = "x")]
- public Nullable<double> X = null;
- //Explicitly setting the name to be used while serializing to JSON.
- [DataMember(Name = "y")]
- public Nullable<double> Y = null;
- }
- }
You can customize along which axis zooming / panning should occur using zoomType property. Some other frequently used customization options include animationEnabled, animationDuration, theme, etc.
Note For step by step instructions, follow our ASP.NET MVC Integration Tutorial