• 机场&代理商-关系图


    机场&代理商-关系图

    思路

    ①首先统计机场活跃度Top10的机场名称,以下是我的表结构,以及查询语句

    表结构:

    查询语句:SELECT * from 2020csale ORDER BY cnt desc LIMIT 10;

    cnt是我统计的活跃度,也就是机场的交易次数

     ②查询代理商前Top10,以下是我的表结构,以及查询语句

    表结构

    查询语句:SELECT * from 2020buyandsale ORDER BY buycount desc LIMIT 10;这里的排序是根据buycount来判断活跃度的,因为代理商与机场发生的关系,只能是代理商购买机场的票,因此只需要根据buycout来判断就行。

     ③建立代理商-机场的关系

    首先我们需要考虑到:

    上一步求出的Top10代理商必须和求出的Top10机场建立联系,除Top10之外的机场就不需要了

    查询语句如下:select * from 2020xlf WHERE sale_nbr IN (SELECT Cid from (SELECT Cid from 2020csale ORDER BY cnt desc LIMIT 10) tt) and buy_nbr='O5593' GROUP BY sale_nbr ORDER BY sale_nbr;

    这里面有个嵌套语句,因为in和limit不能在同一层,因此又往下写了一层。

    ④图表展示

    可以参考这个博文,先练习一下:https://blog.csdn.net/qq_38737992/article/details/89042164

    然后通过ajax来进行异步数据刷新:

    var oids=[];
        var cids=[];
        var datas=[];
        var links=[];
    
        $.ajax({
            url: "getObuyandsale",
            type: "POST",
            dataType: "JSON",
            async: true,
            success: function (data) {
                for (var i=0;i<data.length;i++)
                {
                    oids[i]=data[i].Oid;
                    tmp={name:data[i].Oid,des:data[i].Oid+"代理商",symbolSize: data[i].buycount, category:0};
                    datas.push(tmp);
                    //var sum=data[i].salecount+data[i].buycount;
                }
                $.ajax({
                    url: "getCsale",
                    type: "POST",
                    dataType: "JSON",
                    async: true,
                    success: function (data) {
                        for (var i=0;i<data.length;i++)
                        {
                            cids[i]=data[i].Cid;
                            alert(data[i].cnt);
                            tmp={name:data[i].Cid,des:data[i].Cid+"机场",symbolSize: data[i].cnt, category:1};
                            datas.push(tmp);
                            //var sum=data[i].cnt;
                        }
                        stroid="";
                        for(var i=0;i<oids.length;i++)
                            stroid+=oids[i]+",";
                        //alert(stroid);
                        $.ajax({
                            url: "getralition",
                            type: "POST",
                            data: {"oid": stroid},
                            dataType: "JSON",
                            async: true,
                            success: function (data) {
                                for(var i=0;i<data.length;i++)
                                {
                                    tmp={source:data[i].buy_nbr,target:data[i].sale_nbr,name:'购买',des:'购买'+data[i].sale_nbr+"机场的票"};
                                    links.push(tmp);
                                }
                                myChart.setOption({
                                    series:[{
                                        data:datas,
                                        links:links
                                    }]
                                });
                            },
                            error: function (e) {
                                alert("出现错误!!");
                            }
                        });
                    },
                    error: function (e) {
                        alert("出现错误!!");
                    }
                });
            },
            error: function (e) {
                alert("出现错误!!");
            }
        });

    整个代码奉上:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>统计图表</title>
        <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
        <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
        <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
        <script src="js/echarts.min.js"></script>
    </head>
    <body>
    <div id="main" style="1000px;height:800px"></div>
    <script type="text/javascript">
        var myChart = echarts.init(document.getElementById('main'));
        var categories = [];
    
        categories[0] = {
                name: '代理商'
        };
        categories[1] = {
            name: '机场'
        };
    
        option = {
            // 图的标题
            title: {
                text: '代理商与机场 关系图'
            },
            // 提示框的配置
            tooltip: {
                formatter: function (x) {
                    return x.data.des;
                }
            },
            // 工具箱
            toolbox: {
                // 显示工具箱
                show: true,
                feature: {
                    mark: {
                        show: true
                    },
                    // 还原
                    restore: {
                        show: true
                    },
                    // 保存为图片
                    saveAsImage: {
                        show: true
                    }
                }
            },
            legend: [{
                // selectedMode: 'single',
                data: categories.map(function (a) {
                    return a.name;
                })
            }],
            series: [{
                type: 'graph', // 类型:关系图
                layout: 'force', //图的布局,类型为力导图
                symbolSize: 40, // 调整节点的大小
                roam: true, // 是否开启鼠标缩放和平移漫游。默认不开启。如果只想要开启缩放或者平移,可以设置成 'scale' 或者 'move'。设置成 true 为都开启
                edgeSymbol: ['circle', 'arrow'],
                edgeSymbolSize: [2, 10],
                edgeLabel: {
                    normal: {
                        textStyle: {
                            fontSize: 20
                        }
                    }
                },
                force: {
                    repulsion: 2500,
                    edgeLength: [10, 50]
                },
                draggable: true,
                lineStyle: {
                    normal: {
                         2,
                        color: '#4b565b',
                    }
                },
                edgeLabel: {
                    normal: {
                        show: true,
                        formatter: function (x) {
                            return x.data.name;
                        }
                    }
                },
                label: {
                    normal: {
                        show: true,
                        textStyle: {}
                    }
                },
                // 数据
                data: [],
                links: [],
                categories: categories,
            }]
        };
        myChart.setOption(option);
    
        var oids=[];
        var cids=[];
        var datas=[];
        var links=[];
    
        $.ajax({
            url: "getObuyandsale",
            type: "POST",
            dataType: "JSON",
            async: true,
            success: function (data) {
                for (var i=0;i<data.length;i++)
                {
                    oids[i]=data[i].Oid;
                    tmp={name:data[i].Oid,des:data[i].Oid+"代理商",symbolSize: data[i].buycount, category:0};
                    datas.push(tmp);
                    //var sum=data[i].salecount+data[i].buycount;
                }
                $.ajax({
                    url: "getCsale",
                    type: "POST",
                    dataType: "JSON",
                    async: true,
                    success: function (data) {
                        for (var i=0;i<data.length;i++)
                        {
                            cids[i]=data[i].Cid;
                            alert(data[i].cnt);
                            tmp={name:data[i].Cid,des:data[i].Cid+"机场",symbolSize: data[i].cnt, category:1};
                            datas.push(tmp);
                            //var sum=data[i].cnt;
                        }
                        stroid="";
                        for(var i=0;i<oids.length;i++)
                            stroid+=oids[i]+",";
                        //alert(stroid);
                        $.ajax({
                            url: "getralition",
                            type: "POST",
                            data: {"oid": stroid},
                            dataType: "JSON",
                            async: true,
                            success: function (data) {
                                for(var i=0;i<data.length;i++)
                                {
                                    tmp={source:data[i].buy_nbr,target:data[i].sale_nbr,name:'购买',des:'购买'+data[i].sale_nbr+"机场的票"};
                                    links.push(tmp);
                                }
                                myChart.setOption({
                                    series:[{
                                        data:datas,
                                        links:links
                                    }]
                                });
                            },
                            error: function (e) {
                                alert("出现错误!!");
                            }
                        });
                    },
                    error: function (e) {
                        alert("出现错误!!");
                    }
                });
            },
            error: function (e) {
                alert("出现错误!!");
            }
        });
    
    </script>
    </body>
    </html>

    图标显示:

  • 相关阅读:
    json python
    mysql存储json
    C#中使用Newtonsoft.Json序列化和反序列化自定义类对象
    IDEA 中的.iml文件和.idea文件夹 ( 隐藏方式 )
    C#中Newtonsoft.Json.dll 的使用 序列化 JsonConvert.SerializeObject(obj) Object 反序列 obji = JsonConvert.DeserializeObject<Object>(json数据);
    [python] JSON
    编程经验:分组条件查询having
    软件汉化:OllyDBG 入门之三简介及常用命令
    读书札记: [转] 失去目标的时候进来看看!
    软件汉化:OllyDBG 入门之二破解预备知识(转)
  • 原文地址:https://www.cnblogs.com/xiaofengzai/p/14058209.html
Copyright © 2020-2023  润新知