Fork me on GitHub

微信好友分析之展示好友信息

             点击我前往Github查看源代码

上一篇完成对数据的采集,现在我们来对数据分析和展示

我们将用到百度的echarts,官网为http://echarts.baidu.com/

男女比列分析

   在friden类中Sex属性表示性别,1表示男性,2表示女性,还有些用户没有填写用0表示

首先构建数据库上下文对象

WeChartContex DataBase = new WeChartContex();

接下来创建Action来分析了

  public ActionResult AnalyseForSex()
        {
     
            int ManCount = DataBase.Fridens.Where(f => f.Sex == 1).Count();
            int WoManCount = DataBase.Fridens.Where(f => f.Sex == 2).Count();
            int OthersCount = DataBase.Fridens.Where(f => f.Sex == 0).Count();
            ViewData["man"] = ManCount;
            ViewData["woman"] = WoManCount;
            ViewData["other"] = OthersCount;
            return View();
        }

先统计各个性别好友的数量,把数据交给视图,现在来完成视图

<input type="text" value="@ViewData["man"]" id="man" style="display:none" />
<input type="text" value="@ViewData["woman"]" id="woman" style="display:none" />
<input type="text" value="@ViewData["other"]" id="other" style="display:none" />
  <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 600px;height:400px;"></div>
<script src="~/Scripts/echarts.min.js"></script>
<script type="text/javascript">
    window.onload = function () {
        var manvalue=$("#man").val();
        var womanvalue=$("#woman").val();
        var OTERVALUE=$("#other").val();
        var myChart = echarts.init(document.getElementById('main'));
        option = {
            tooltip: {
                trigger: 'item',
                formatter: "{a} <br/>{b}: {c} ({d}%)"
            },
            legend: {
                orient: 'vertical',
                x: 'left',
                data: ['', '', '其他']
            },
            series: [
                {
                    name: '访问来源',
                    type: 'pie',
                    radius: ['50%', '70%'],
                    avoidLabelOverlap: false,
                    label: {
                        normal: {
                            show: false,
                            position: 'center'
                        },
                        emphasis: {
                            show: true,
                            textStyle: {
                                fontSize: '30',
                                fontWeight: 'bold'
                            }
                        }
                    },
                    labelLine: {
                        normal: {
                            show: false
                        }
                    },
                    data: [
                        { value:manvalue,name: '' },
                        { value: womanvalue, name: '' },
                        { value: OTERVALUE, name: '其他' },
                      
                    ]
                }
            ]
              
        };
        myChart.setOption(option);
    }
</script>

注意需要引用echarts.min.js,我们来看看效果

分析好友的地域分布

创建Action

 

 public ActionResult AnalyseforProvince()
        {
            return View();
        }

 

  还有一个提供身份信息的Action

 public ActionResult Province()
        {
            string sql = "select province as name, count(*) as value from Friends group by province";
          List<Province> list=  DataBase.Database.SqlQuery<Province>(sql).ToList();
          return Json(list);
        }

这里有个Province类来承接数据库查询到的数据

 public class Province
    {
        public string name { get; set; }
        public int value { get; set; }
    }

接下来完善view

<div id="main" style="width:1200px;height:800px;"></div>

<script src="~/Scripts/echarts.min.js"></script>
<script src="~/Scripts/china.js"></script>
 <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<script src="~/Scripts/jquery-1.10.2.min.js"></script>

<script>
    var chart = echarts.init(document.getElementById('main'));
   
    $.ajax({
        type: "post",
        url: "../DataAnalyse/Province",
        success: function (msg)
        {
            var server = [{
                name: 'number',
                type: 'map',
                map: 'china',
                data: msg
            }]
            option = {
                title: {
                    text: '好友分布',
                    subtext: '',
                    left: 'center'
                },
                tooltip: {
                    trigger: 'item'
                },
                legend: {
                    orient: 'vertical',
                    left: 'left',
                    data: ['人数']
                },
                visualMap: {
                    min: 0,
                    max: 50,
                    left: 'left',
                    top: 'bottom',
                    text: ['', ''],           // 文本,默认为数值文本
                    calculable: true
                },
                toolbox: {
                    show: true,
                    orient: 'vertical',
                    left: 'right',
                    top: 'center',
                    feature: {
                        dataView: { readOnly: false },
                        restore: {},
                        saveAsImage: {}
                    }
                },
                series: [{
                    name: '人数',
                    type: 'map',
                    map: 'china',
                    data:msg
                }]
            };
            chart.setOption(option);
        }
    })
  
</script>

NOTE:不但要引用echarts.min.js还要引用china.js

看看效果

 

 

完工了!!!

 

posted @ 2016-12-01 17:45  王起帆  阅读(2734)  评论(0编辑  收藏  举报