web开发程序员

阿里云G2图表+Sqlserver+Asp.net MVC 开发

2017-09-06  本文已影响51人  Hubert_Biyo

1、何为G2:
  G2 (The Grammar Of Graphics) 是一个由纯 JavaScript 编写、强大的语义化图表生成工具,它提供了一整套图形语法,可以让用户通过简单的语法搭建出无数种图表,并且集成了大量的统计工具,支持多种坐标系绘制,可以让用户自由地定制图表,是为大数据时代而准备的强大的可视化工具。

2、G2图表简单的例子:
  阿里云用demo 地址为:https://antv.alipay.com/g2/doc

3、G2数据由sqlserver提供,通过ashx一般处理程序+ajax获取数据库中的数据并转换为json数据,供G2使用,展示出图表

页面显示代码:

@{
    Layout = "";
}
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <script src="/Scripts/jquery-1.10.2.min.js" type="text/javascript"></script>
    <!-- 引入在线资源 -->
    <script src="https://a.alipayobjects.com/g/datavis/g2/2.3.9/index.js"></script>
</head>
<body>
    <div id="c1"></div>
    <script type="text/javascript">
        $.ajax({
            type: "post",
            async: true,
            url: "/GetSqlJYSum.ashx",
            data: { cmd: "test" },//发送到服务器的参数
            datatype: "json",
            success: function (result) {
                //alert("执行ajax方法");
                if (result) {
                    //alert(result);
                    var data = JSON.parse(result);
                    var chart = new G2.Chart({
                        id: 'c1', // 指定图表容器 ID
                        width: 600, // 指定图表宽度
                        height: 300, // 指定图表高度
                        plotCfg: {
                            margin: [50, 50, 80, 100]   //上右下左
                        }
                    });
                    // Step 2: 载入数据源,定义列信息
                    chart.source(data, {
                        Month: {
                            alias: '年份' // 列定义,定义该属性显示的别名
                        },
                        Num: {
                            alias: '数量'
                        }
                    });
                    // Step 3:创建图形语法,绘制柱状图,由 genre 和 sold 两个属性决定图形位置,genre 映射至 x 轴,sold 映射至 y 轴
                    chart.interval().position('Month*Num').color('Month')
                    // Step 4: 渲染图表
                    chart.render();
                }
            },
            error: function (errorMsg) {
                alert("request data failed!!!");
            }
        });
    </script>
</body>
</html>

一般处理程序代码如下:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Script.Serialization;

namespace MVCG2Demo
{
    /// <summary>
    /// GetSqlJYSum 的摘要说明
    /// </summary>
    public class GetSqlJYSum : IHttpHandler
    {

        //设置数据库连接
        public static string con = ConfigurationManager.AppSettings["ConnectionEduString"];

        DataSet ds = new DataSet();
        SqlDataAdapter adapter = new SqlDataAdapter();
        JavaScriptSerializer jsS = new JavaScriptSerializer();
        List<object> lists = new List<object>();
        //SeriesseriesObj=newSeries();
        string result = "";


        public void ProcessRequest(HttpContext context)
        {
            //获取一同发送过来的参数
            //stringcommand=context.Request["cmd"];
            context.Response.ContentType = "text/plain";
            //用来传回去的内容
            //context.Response.Write("HelloWorld");
            Get_Data01(context);
        }
        public void Get_Data01(HttpContext context)
        {
            string sql = @"SELECT LEFT ( b.zhanhuiname , 4 )    AS zhanhuiname ,
        COUNT(*) AS SignUpSum
FROM    zhanhuiguanlian a
        INNER JOIN dbo.zhanhui b ON a.zhanhuiid = b.ID
GROUP BY b.zhanhuiname
ORDER BY b.zhanhuiname";
            ds = GetDataFromDatabase(sql);
            lists = new List<object>();
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                var obj = new { Month = dr["zhanhuiname"], Num = dr["SignUpSum"] };
                lists.Add(obj);
            }
            jsS = new JavaScriptSerializer();
            result = jsS.Serialize(lists);
            context.Response.Write(result);
        }


        public DataSet GetDataFromDatabase(string sql)
        {
            ds = new DataSet();
            adapter = new SqlDataAdapter(sql, con);
            adapter.Fill(ds);
            return ds;
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

4、如图

用G2形成的图表

4、G2图表KPI文档:https://antv.alipay.com/g2/api/index.html

上一篇 下一篇

猜你喜欢

热点阅读