EChartsDemo-饼图01

一、Controller 后台代码(模拟数据)

using MaybeEleven.EchartsDemo.Models;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MaybeEleven.EchartsDemo.Controllers
{
    public class HomeController : Controller
    {
        private int index = 0;

        [HttpGet]
        public ActionResult GetDepartmentEcharts()
        {
            if (Request.IsAjaxRequest())
            {
                List<Student> Students = new List<Student>
            {
                new Student{
                    Id=++index,
                    Name="张三",
                    CreateTime=DateTime.Now,
                    ModifyTime=null,
                    Department="骨科"
                },
                 new Student{
                    Id=++index,
                    Name="张三",
                    CreateTime=DateTime.Now,
                    ModifyTime=null,
                     Department="眼科"
                },
                  new Student{
                    Id=++index,
                    Name="李四",
                    CreateTime=new DateTime(2020,7,11),
                    ModifyTime=null,
                     Department="眼科"
                },
                   new Student{
                    Id=++index,
                    Name="赵六",
                     CreateTime=new DateTime(2019,7,11),
                    ModifyTime=null
                },
                    new Student{
                    Id=++index,
                    Name="张三是",
                    CreateTime=new DateTime(2018,7,11),
                    ModifyTime=null,
                     Department="妇科"
                },
                     new Student{
                    Id=++index,
                    Name="范德萨发生的",
                    CreateTime=new DateTime(2018,3,11),
                    ModifyTime=null,
                     Department="眼科"
                },
                      new Student{
                    Id=++index,
                    Name="赵六",
                     CreateTime=new DateTime(2019,7,11),
                    ModifyTime=null,
                     Department="耳鼻喉科"
                },
                    new Student{
                    Id=++index,
                    Name="张三是",
                    CreateTime=new DateTime(2003,7,11),
                    ModifyTime=null,
                     Department="耳鼻喉科"
                },
                     new Student{
                    Id=++index,
                    Name="范德萨发生的",
                    CreateTime=new DateTime(2002,3,11),
                    ModifyTime=null,
                     Department="眼科"
                },
                      new Student{
                    Id=++index,
                    Name="赵六",
                     CreateTime=new DateTime(2016,7,11),
                    ModifyTime=null,
                     Department="妇科"
                },
                    new Student{
                    Id=++index,
                    Name="张三是",
                    CreateTime=new DateTime(2015,7,11),
                    ModifyTime=null
                },
                     new Student{
                    Id=++index,
                    Name="范德萨发生的",
                    CreateTime=new DateTime(2018,3,11),
                    ModifyTime=null,
                     Department="骨科"
                },
            };

                var data = Students.GroupBy(g => g.CreateTime.Year)
                    .Select(g => new EchartsDepartmentEntity
                    {
                        value = g.Count(),
                        name = g.Key.ToString()
                    }).OrderBy(x => x.name);
                return Json(new { data = data }, JsonRequestBehavior.AllowGet);
            }

            return View();
        }

      
    }
}

二、实体类

 1 using System;
 2 
 3 namespace MaybeEleven.EchartsDemo.Models
 4 {
 5     public class Student
 6     {
 7 
 8         public int Id { get; set; }
 9 
10         public string Name { get; set; }
11 
12         public DateTime CreateTime { get; set; }
13 
14         public DateTime? ModifyTime { get; set; }
15 
16         public string Department { get; set; }
17     }
18 }
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 
 6 namespace MaybeEleven.EchartsDemo.Models
 7 {
 8     public class EchartsEntity
 9     {
10         public string name { get; set; }
11         public dynamic value { get; set; }
12     }
13 
14     public class EchartsDepartmentEntity : EchartsEntity
15     {
16         public string category { get; set; }
17     }
18 }

三、渲染视图(ECharts5+jQuery 插件自己准备)+function返回echarts中需要的数据

@{
    Layout = null;
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>年手术例数统计</title>
    <script src="~/Scripts/jquery-3.4.1.js"></script>
    <script src="~/Scripts/echarts.js"></script>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        #container {
             700px;
            height: 595px;
            display: inline-block;
        }
    </style>
</head>
<body>
    <div id="container"></div>
    <script>
        //Echart 图表容器
        var myChart = echarts.init(document.querySelector("#container"));
        $(function () {
            //文档就绪
            getEchatOperations()
        })

        //自定义函数返回格式 [{name:"2015",value:1320}]
        function getEchatOperations() {
            $.ajax({
                type: 'get',
                url:"@Url.Action("GetDepartmentEcharts", "Home")",
                dataType: 'json',
                success: function (res) {
                    // 绑定数据
                    renderChartOne(res.data)
                }
            })
        }
       
        function renderChartOne(d) {
           
          var   option = {
                title: {
                    text: "年手术例数统计",
                    subtext: "虚拟数据",
                    left: "center",
                },
                tooltip: {
                    trigger: 'item'
                },
                legend: {
                    top: '5%',
                    right: 'right'
                },
                series: [
                    {
                        name: '访问来源',
                        type: 'pie',
                        center: ['50%', '50%'],
                        radius: [50, 250],
                        roseType: 'area',
                        avoidLabelOverlap: false,
                        itemStyle: {
                            borderRadius: 10,
                            borderColor: '#fff',
                            borderWidth: 2
                        },
                        label: {
                            show: false,
                            position: 'center'
                        },
                        emphasis: {
                            label: {
                                show: true,
                                fontSize: '20',
                                fontWeight: 'bold'
                            }
                        },
                        labelLine: {
                            show: false
                        },
                        data: d
                    }
                ]
            };

            option && myChart.setOption(option);
        }
    </script>
</body>
</html>
原文地址:https://www.cnblogs.com/ABC-wangyuhan/p/14506750.html