Echarts的使用教程

昨天憶發表於2021-06-18

專案中需要使用圖表,最初使用的.NET自帶的MSChart控制元件,做出來的效果不太好,所以又使用了Echarts控制元件。

MSChart原始碼放在最後,可自行下載檢視。

Echarts是一個基於 JavaScript 的開源視覺化圖表庫,在此是在.NET MVC中的使用,其他專案也應該是如出一轍。

Echarts官網:http://echarts.apache.org

Echarts下載:https://echarts.apache.org/zh/download.html

 

使用說明:

  1、引入ECharts

    <script src="~/Content/echarts/echarts.min.js"></script>

   2、為ECharts準備一個具備大小(寬高)的Dom

     <div id="chart_rentalreturn" style="width: 700px;height:300px;"></div>

   3、建立關於圖表屬性的物件

 1 public class normal
 2     {
 3         /// <summary>
 4         /// color
 5         /// </summary>
 6         public string color
 7         {
 8             get;
 9             set;
10 
11         }
12 
13     }
14     public class itemStyle
15     {
16         /// <summary>
17         /// normal
18         /// </summary>
19         public object normal
20         {
21             get;
22             set;
23         }
24     }
25     public class data
26     {
27         public string name
28         {
29             get;
30             set;
31         }
32         public int value
33         {
34             get;
35             set;
36         }
37         public object itemStyle
38         {
39             get;
40             set;
41         }
42     }
43 
44     public class Series
45     {
46         /// <summary>
47         /// sereis序列組id
48         /// </summary>
49         public int id
50         {
51             get;
52             set;
53         }
54         /// <summary>
55         /// series序列組名稱
56         /// </summary>
57         public string name
58         {
59             get;
60             set;
61         }
62         /// <summary>
63         /// series序列組呈現圖表型別(line、column、bar等)
64         /// </summary>
65         public string type
66         {
67             get;
68             set;
69         }
70         /// <summary>
71         /// series序列組的itemstyle
72         /// </summary>
73         public object itemStyle
74         {
75             get;
76             set;
77         }
78         /// <summary>
79         /// series序列組的資料為資料型別陣列
80         /// </summary>
81         public List<object> data
82         {
83             get;
84             set;
85         }
86     }

   4、控制器中建立方法

 1 public JsonResult GetEchartsRentalReturn()
 2         {
 3             //圖表的category陣列
 4             List<string> categoryList = new List<string>();
 5             //圖表的series陣列
 6             List<Series> seriesList = new List<Series>();
 7             //設定legend內的data陣列為series的name集合
 8             List<string> legendList = new List<string>();
 9             legendList.Add("Rental"); //這裡的名稱必須和series的每一組series的name保持一致
10             legendList.Add("Return");
11 
12             Series rentalSeries = new Series();
13             rentalSeries.id = 0;
14             rentalSeries.name = "Rental";
15             rentalSeries.type = "line"; //線性圖
16             rentalSeries.data = new List<object>();
17             rentalSeries.itemStyle = new itemStyle { normal = new normal { color = "#0099FF" } };
18 
19             Series returnSeries = new Series();
20             returnSeries.id = 1;
21             returnSeries.name = "Return";
22             returnSeries.type = "line"; 
23             returnSeries.data = new List<object>();
24             returnSeries.itemStyle = new itemStyle { normal = new normal { color = "#00CC00" } };
25             Random rd = new Random();
26             for (int i = 6; i <= 23; i++)
27             {
28                 categoryList.Add(i.ToString());
29                 rentalSeries.data.Add(rd.Next(0, 801));
30                 returnSeries.data.Add(rd.Next(0, 801));
31             }
32 
33             //將sereis物件加入sereis陣列列表內
34             seriesList.Add(rentalSeries);
35             seriesList.Add(returnSeries);
36             var newObj = new
37             {
38                 category = categoryList,
39                 series = seriesList,
40                 legend = legendList
41             };
42 
43             return Json(newObj, JsonRequestBehavior.AllowGet);
44         }  

   5、建立圖表

 1     <script type="text/javascript">
 2         $(document).ready(function () {
 3             func_echarts_pie_rentalreturn();
 4         });
 5 
 6         function func_echarts_pie_rentalreturn() {
 7             // 基於準備好的dom,初始化echarts例項
 8             var myChart = echarts.init(document.getElementById('chart_rentalreturn'));
 9 
10             // 指定圖表的配置項和資料
11             var option = {
12                 title: {
13                     text: 'Rental/Return Frequency  (Unit  X:Hour   Y:Times)',
14                     bottom: '92%'
15                 },
16                 tooltip: {
17                     trigger: 'axis'
18                 },
19                 legend: {
20                     data: ['Rental', 'Return'],
21                     bottom: '87%'
22                 },
23                 grid: {
24                     left: '3%',
25                     right: '4%',
26                     bottom: '3%',
27                     containLabel: true
28                 },
29                 toolbox: {
30                     feature: {
31                         saveAsImage: {}
32                     }
33                 },
34                 xAxis: {
35                     type: 'category',
36                     boundaryGap: false
37                 },
38                 yAxis: {
39                     type: 'value'
40                 },
41                 series: []
42             };
43 
44             $.ajax({
45                 type: "post",
46                 url: "/Home/GetEchartsRentalReturn",
47                 data:
48                 {
49                     async: false,
50                     operate: "myChart"
51                 },
52                 dataType: "json",        //返回資料形式為json
53                 success: function (result) {
54                     for (var i = 0; i < result.length; i++) {
55                         result[i].name;
56                     }
57                     option.xAxis.data = result.category;
58                     option.series = result.series;
59                     option.legend.data = result.legend;
60                     myChart.setOption(option);
61                 },
62                 error: function (errorMsg) {
63                     //請求失敗時執行該函式
64                     alert("圖表請求資料失敗!");
65                 }
66             });
67         }
68     </script>

   6、圖表效果顯示

 

 

結語:使用ECharts之後,覺得功能很強大,可以滿足任何圖表的需求,需要的功能都可以在官網的示例中找到。這裡只寫了一個簡單的使用,其餘的可根據官網示例自行摸索。

MSChart原始碼下載:

  連結:https://pan.baidu.com/s/1RF0mYfssp6cmRAEJV2Bv8g
  提取碼:lju8

 

相關文章