大数据可视化之关于北上广深的人群迁徙图

<!--
1、创建HTML页面基本结构
2、创建展示图形容器
3、引入echarts依赖包
4、初始化echarts对象
5、设置参数
-->
<html>
    <head>
        <title>北上广深人群迁徙图</title>
        <meta charset="utf-8" />
        
        <script src="echarts.min.js"></script>
        <script src="china.js"></script>
        <script src="jquery-3.5.1.min.js"></script>
    </head>
    
    <body>
        <div id="main" style="width:100%;height:100%;"></div>
        
        <script>
            var myEcharts = echarts.init(document.getElementById("main"));
            
            var option = {
            backgroundColor: '#f0ffff',
                title : {
                    text: '北上广深人群迁徙图',
                    left: 'center',
                    
                },
                tooltip : {
                    trigger: 'item',
                    formatter:function(params){
                       return "城市:"+params.name+" "+(params.value)[2]+"%";
                    }
                },
                legend: {
                    orient: 'vertical',
                    top: 'bottom',
                    left: 'right',
                    data:['北京', '上海', '广州','深圳'],
                    textStyle: {
                        color: '#f0fff'
                    },
                },

                geo: {
                    map: 'china',
                    roam: true,
                    itemStyle: {
                        normal: {
                            areaColor: '#323c48',
                            borderColor: '#404a59'
                        },
                        emphasis: {
                            areaColor: '#2a333d'
                        }
                    }
                }
            };

            
            
            var geoCoordMap = null;
            $.ajax({
                url:"dtData.json",
                async:false,
                dataType:"json",
                success:function(data){
                    geoCoordMap = data;
                    console.log(geoCoordMap);
                }
            });
            var myData = null;
            $.ajax({
                url:"PopulationData.json",
                async:false,
                dataType:"json",
                success:function(data){
                    myData = [
                        ["北京",data.BJData],
                        ["上海",data.SHData],
                        ["广州",data.GZData],
                        ["深圳",data.SZData]
                    ];
                }
            });

            var convertData = function (data) {
                var res = [];
                for (var i = 0; i < data.length; i++) {
                    var dataItem = data[i];
                    var fromCoord = geoCoordMap[dataItem[0].name];
                    var toCoord = geoCoordMap[dataItem[1].name];
                    if (fromCoord && toCoord) {
                        res.push({
                            fromName: dataItem[0].name,
                            toName: dataItem[1].name,
                            coords: [fromCoord, toCoord]
                        });
                    }
                }
                return res;
            };
            function getData(data){
                
                var citydata = [];
                data.forEach(function(item,i){
                    var myname = item[1].name;
                    var myvalue = item[1].value;
                    var mycoord = geoCoordMap[myname];
                    
                    mycoord.push(myvalue);

                    citydata.push({
                        'name':myname,
                        'value':mycoord
                    }
                    );
                    
                });
                
                return citydata;
            }
            var color = ['yellow','#46bee9','#a6c84c','#ffa022'];
            var series = [];
            $.each(myData,function(i,item){
                series.push(
                    {
                        name: item[0],
                        type: 'lines',
                        zlevel: 1,
                        effect: {
                            show: true,
                            period: 6,
                            trailLength: 0.7,
                            color: '#fff',
                            symbolSize: 3
                            },
                        lineStyle: {
                            normal: {
                                color: color[i],
                                width: 0,
                                curveness: 0.2
                                    }
                            },
                            data: convertData(item[1])
                    },
                    {
                        name: item[0],
                        type: 'lines',
                        zlevel: 2,
                        symbol: ['none', 'arrow'],
                        symbolSize: 10,
                        effect: {
                            show: true,
                            period: 6,
                            trailLength: 0,
                            symbol: 'emptyCircle',
                            symbolSize: 3
                            },
                        lineStyle: {
                            normal: {
                                color: color[i],
                                width: 1,
                                opacity: 0.6,
                                curveness: 0.2
                                    }
                            },
                        data: convertData(item[1])
                    },
                    {
                        name: item[0],
                        type: 'effectScatter',
                        coordinateSystem: 'geo',
                        zlevel: 2,
                        rippleEffect: {
                            brushType: 'stroke'
                        },
                        label: {
                            normal: {
                                show: true,
                                position: 'right',
                                formatter: '{b}'
                            }
                        },
                        symbolSize: function (val) {
                            return val[2]*3;
                        },
                        itemStyle: {
                            normal: {
                                color: color[i]
                            }
                        },
                        data: getData(item[1])
                    }
                    
                );
                
            });
            option.series = series;


            myEcharts.setOption(option);


            
            
        </script>
    </body>
</html>

posted @ 2020-10-25 10:16  不忘初心_LZY  阅读(440)  评论(0编辑  收藏  举报