echarts制作迁徙图

使用echarts制作迁徙图,以天津市为例,先上图

其中全国各省地图边界经纬度坐标下载地址:http://www.ourd3js.com/wordpress/638/#more-638


代码示例:

// 路径配置
    require.config({
        paths: {
            echarts: 'build/dist'
        }
    });

    // 使用
    require(
            [
                'echarts',
                'echarts/chart/map' // 使用柱状图就加载bar模块,按需加载
            ],
            function (ec) {
                require('echarts/util/mapData/params').params.tianjin = {

                    getGeoJson: function (callback) {
                        $.getJSON('build/tjfgs.json', function (data) {
                            // 压缩后的地图数据必须使用 decode 函数转换
                            callback(require('echarts/util/mapData/params').decode(data));
                        });
                    }
                };

                // 基于准备好的dom,初始化echarts图表
                var myChart = ec.init(document.getElementById('main'));

                var option = {
                    backgroundColor: '',
                    color: ['gold', 'aqua', 'lime'],
                    tooltip : {
                        trigger: 'item',
                        formatter: '{b}'
                    },
                    legend: {
                        show :false,
                        orient: 'vertical',
                        x: '30',
                        data: ['南开红桥', '和平河西', '河北河东'],
                        selectedMode: 'single',
                        selected: {
                            '和平河西': false,
                            '河北河东': false
                        },
                        textStyle: {
                            color: '#fff'
                        }
                    },
                    dataRange: {
                        show:false,
                        min: 0,
                        max: 100,
                        x: '760',
                        y: '5',
                        orient: 'horizontal',
                        calculable: true,
                        color: ['#ff3333', 'orange', 'yellow', 'lime', 'aqua'],
                        textStyle: {
                            color: '#fff'
                        }
                    },
                    //通用图形配置
                    series: [
                        {
                            name: '南开红桥',
                            type: 'map',
                            hoverable: false,
                            mapType: 'tianjin',
                            roam: false,

                            itemStyle: {
                                normal:{
                                    label:{
                                        show:true,
                                        textStyle:{
                                            color:'#07d40d'
                                        }
                                    },
                                    borderColor:'rgba(255,255,255,1)',
                                    borderWidth:0.5,
                                    areaStyle:{
                                        color: '#CCCCFF'
                                    }
                                },
                                emphasis:{label:{show:true}}
                            },

                            data: [],
                            //                          数据表现内容
                    markLine: {
                                smooth: true,
                                effect : {
                                    show: true,
                                    scaleSize: 1,
                                    period: 30,
                                    color: '#fff',
                                    shadowBlur: 10
                                },
                                itemStyle : {
                                    normal: {
                                        borderWidth:1,
                                        lineStyle: {
                                            type: 'solid',
                                            shadowBlur: 10
                                        }
                                    }
                                },
                                data: [
                                    [{name:'南开红桥'},{name:'宝坻区'}],
                                    [{name:'南开红桥'},{name:'北辰区'}],
                                    [{name:'南开红桥'},{name:'东丽区'}],
                                    [{name:'南开红桥'},{name:'和平河西'}],
                                    [{name:'南开红桥'},{name:'河北河东'}],
                                    [{name:'南开红桥'},{name:'津南区'}],
                                    [{name:'南开红桥'},{name:'武清区'}],
                                ],
                            },
                            geoCoord: {
                                '宝坻区': [117.310682,39.730124],
                                '北辰区': [117.139545,39.23218],
                                '东丽区': [117.323722,39.091136],
                                '和平河西': [117.21766,39.116725],
                                '河北河东': [117.236416,39.149329],
                                '津南区': [117.335891,38.946767],
                                '武清区':[117.03002,39.405758],
                                '南开红桥':[117.146565,39.154897],
                            },
                markPoint: {
                                symbol: 'emptyCircle',
                                //symbolSize:5,
                                effect : {
                                    show: true,
                                    shadowBlur : 0
                                },
                                itemStyle:{
                                    normal:{
                                        label:{show:true}
                                    },
                                    emphasis: {
                                        label:{position:'top'}
                                    }
                                },
                                data: [
                                    {name:'宝坻区',value:95},
                                    {name:'北辰区',value:90},
                                    {name:'东丽区',value:85},
                                    {name:'和平河西',value:75},
                                    {name:'河北河东',value:65},
                                    {name:'津南区',value:55},
                                    {name:'武清区',value:100}

                                ]
                            }
                        }
                    ]
                };

                // 为echarts对象加载数据
                myChart.setOption(option);
            }
    );

示例代码下载地址: http://download.csdn.net/download/ardo_pass/10141785

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
ECharts 是一个优秀的数据可视化库,它提供了许多绘工具,包括迁徙。下面是一个简单的迁徙绘制实例: 1. 引入 ECharts 库和主题: ```html <!-- 引入 ECharts 库 --> <script src="https://cdn.staticfile.org/echarts/4.7.0/echarts.min.js"></script> <!-- 引入 ECharts 主题 --> <script src="https://cdn.staticfile.org/echarts/4.7.0/theme/macarons.js"></script> ``` 2. 准备数据: ```javascript var geoCoordMap = { '上海': [121.4648, 31.2891], '北京': [116.4551, 40.2539], '深圳': [114.0728, 22.5529], // ... }; var data = [ { fromName: '上海', toName: '北京', value: 95 }, { fromName: '上海', toName: '深圳', value: 90 }, // ... ]; ``` 其中,`geoCoordMap` 是地理坐标系的城市坐标数据,`data` 是迁徙数据,包括起始城市、终点城市和迁徙人数。 3. 绘制地图: ```javascript var myChart = echarts.init(document.getElementById('main'), 'macarons'); myChart.setOption({ tooltip: { trigger: 'item' }, geo: { map: 'china', label: { emphasis: { show: false } }, roam: true, itemStyle: { normal: { areaColor: '#323c48', borderColor: '#404a59' }, emphasis: { areaColor: '#2a333d' } } }, series: [ { name: '迁徙', type: 'lines', coordinateSystem: 'geo', data: convertData(data, geoCoordMap), // ... }, { name: '起点', type: 'scatter', coordinateSystem: 'geo', data: convertData(data, geoCoordMap, true), // ... }, { name: '终点', type: 'scatter', coordinateSystem: 'geo', data: convertData(data, geoCoordMap, false), // ... } ] }); ``` 其中,`tooltip` 是提示框配置,`geo` 是地理坐标系配置,`series` 是系列配置。在系列中,`type:'lines'` 表示绘制线条,`type:'scatter'` 表示绘制点,`data` 是数据,`coordinateSystem` 表示坐标系类型。 4. 编写数据转换函数: ```javascript function convertData(data, geoCoordMap, isFrom) { var res = []; for (var i = 0; i < data.length; i++) { var geoFrom = geoCoordMap[data[i].fromName]; var geoTo = geoCoordMap[data[i].toName]; if (geoFrom && geoTo) { res.push({ fromName: data[i].fromName, toName: data[i].toName, coords: isFrom ? [geoFrom, geoTo] : [geoTo, geoFrom], value: data[i].value }); } } return res; } ``` 这个函数用于将原始数据转换为 ECharts 所需的数据格式,其中,`isFrom` 表示是否为起点,`coords` 表示起点和终点的坐标。 最终效果如下所示: ![迁徙](https://cdn.jsdelivr.net/gh/yanglr/image-hosting/echarts-migration.png)
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值