.NET MVC5搭配Chart.js繪製圖表

最近接觸了Chart.js繪製圖表的方式覺得非常容易上手,於是研究了一下Chart.js與MVC5搭配的方法,也在這紀錄一下


 

Chart.js簡介

1.內建八種圖形

Line(折線圖)

Bar(長條圖)

Radar(雷達圖)

Pie(圓餅圖)

Polar Area(極地區域圖)

Bubble(氣泡圖)

Scatter(散佈圖)

Area(區域圖)

2.MVC專案中安裝Chart.js

在NuGet上搜尋Chart.js然後直接安裝

安裝完之後要載入Chart.js有兩種方式

第一種:綁定到BundleConfig.cs,將圖片的內容加入到public static void RegisterBundles()內

第二種:在每個要使用View的檢視頁都加入以下語法

<script src="~/Scripts/Chart.min.js"></script>

3.第2項完成後,我們就可以開始撰寫程式

專案內容:使用Bar圖顯示設備故障次數

在Models資料夾建立一個Model來存取屬性

public class ModelChartJs
    {
        public string dev { get; set; }
        public int errCount { get; set; }
    }

接著建立一個Controller用來傳遞數據

public ActionResult ErrDevBar()
        {
            //TODO:建立X軸用以統計月份
            string[] Months = { "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月" };
            ViewBag.MonthLabel = Months;
            List<ModelChartJs> Dev = new List<ModelChartJs>
            {
                new ModelChartJs
                {
                    dev="1號機",
                    errCount=new int[]
                    {
                        1,3,5,7,9,12,20,9,10,14,19,20
                    }
                },
                new ModelChartJs
                {
                    dev="2號機",
                    errCount=new int[]
                    {
                        1,2,9,8,7,4,1,2,3,6,4,5
                    }
                }
            };
            return View(Dev);
        }

Controller建立好之後,我們產生一個沒有模型的Empty頁面,撰寫以下程式碼

@model IEnumerable<ChartJs.Models.ModelChartJs>

@{
    ViewBag.Title = "ErrDevBar";
    var jsonMonths = Json.Encode(ViewBag.MonthLabel);//將Controller傳來轉型成json
    var jsonErrDev = Json.Encode(Model);//將透過Model讀取的資料轉成json
}

<h2>ErrDevBar</h2>
<canvas id="BarChart"></canvas>//Chart一定用使用canvas標籤,不然會出現建立失敗的錯誤訊息
<script>
    var jsErrDev =@Html.Raw(jsonErrDev);//顯示json原始資料
    var ctx = document.getElementById("BarChart");
    var chart = new Chart(ctx, {
        type: 'bar',
        data: {
            labels:@Html.Raw(jsonMonths),
            datasets: [{
                label: jsErrDev[0].dev,
                data: jsErrDev[0].errCount,
                backgroundColor: [
                    'rgba(255,199,132,0.2)',
                    'rgba(255,99,32,0.2)',
                    'rgba(255,99,13,0.2)',
                    'rgba(25,99,132,0.2)',
                    'rgba(25,99,232,0.2)',
                    'rgba(155,199,132,0.2)',
                    'rgba(55,99,232,0.2)',
                    'rgba(75,9,32,0.2)',
                    'rgba(55,9,32,0.2)',
                    'rgba(25,89,232,0.2)',
                    'rgba(55,199,32,0.2)',
                    'rgba(155,66,88,0.2)',
                ]
            }]
        }
    })
</script>

成果檔

ChartJs重點補充

1.除了透過NuGet安裝外也可透過CDN的方式引用<script src="https://cdnjs.com/libraries/Chart.js"></script>

2.Chart.js一定要使用在<canvas></canvas>標籤內

3.建立new Chart()繪圖物件共有三個重點屬性

  • type:"圖表類型",
  • data:{要顯示的資料},
  • options{組態設定,例如標題、點的樣式}

此篇主要是紀錄MVC與Chart.js如何搭配使用,但Chart.js還有很多細項的功能,有興趣的小夥伴可以google科普一下