Funnel Charts are used to represent multiple stages in a process like sales process, interview process etc. Given example shows Email Campaign Analysis along with source code that you can try running locally.
@{ Layout = null; } <!DOCTYPE HTML> <html> <head> <script> window.onload = function () { var chart = new CanvasJS.Chart("chartContainer", { animationEnabled: true, exportEnabled: true, title: { text: "Sales via Email Campaign" }, data: [{ type: "funnel", yValueFormatString: "#\"%\"", indexLabel: "{label} - {y}", 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.Collections.Generic; using System.Web.Mvc; namespace ASPNET_MVC_ChartsDemo.Controllers { public class HomeController : Controller { // GET: Home public ActionResult Index() { List<DataPoint> dataPoints = new List<DataPoint>(); dataPoints.Add(new DataPoint("Emails Sent", 100)); dataPoints.Add(new DataPoint("Emails Opened", 65)); dataPoints.Add(new DataPoint("Links Clicked", 45)); dataPoints.Add(new DataPoint("Converted", 10)); ViewBag.DataPoints = JsonConvert.SerializeObject(dataPoints); return View(); } } }
using System; using System.Runtime.Serialization; namespace ASPNET_MVC_ChartsDemo.Models { //DataContract for Serializing Data - required to serve in JSON format [DataContract] public class DataPoint { public DataPoint(string label, double y) { this.Label = label; this.Y = y; } //Explicitly setting the name to be used while serializing to JSON. [DataMember(Name = "label")] public string Label = ""; //Explicitly setting the name to be used while serializing to JSON. [DataMember(Name = "y")] public Nullable<double> Y = null; } }
Neck of the funnel can be customized using neckHeight and neckWidth properties. You can also reverse the funnel by setting the reversed property to true.
Note For step by step instructions, follow our ASP.NET MVC Integration Tutorial