轻松学会echarts地图图表:10个实用案例解析,让你的数据可视化更高效

2026-11-02 0 阅读

ECharts 是一款使用 JavaScript 实现的开源可视化库,它可以帮助用户将数据通过丰富的图表进行展示。其中,地图图表以其直观性和地理空间感,在数据可视化领域有着广泛的应用。本文将为你介绍10个实用的ECharts地图图表案例,帮助你快速掌握地图图表的制作技巧,让你的数据可视化更加高效。

案例一:中国地图展示

1.1 案例描述

展示中国地图,并用不同颜色表示不同省份的GDP数据。

1.2 代码示例

var myChart = echarts.init(document.getElementById('main'));

var option = {
    title: {
        text: '中国地图GDP展示',
        left: 'center'
    },
    tooltip: {
        trigger: 'item'
    },
    visualMap: {
        min: 0,
        max: 10000,
        left: 'left',
        top: 'bottom',
        text: ['高','低'],           // 文本,默认为数值文本
        calculable: true
    },
    series: [
        {
            name: 'GDP',
            type: 'map',
            mapType: 'china',
            roam: false,
            label: {
                show: true
            },
            data: [
                {name: '北京', value: 2000},
                {name: '上海', value: 3000},
                // ... 其他省份数据
            ]
        }
    ]
};

myChart.setOption(option);

案例二:世界地图展示

2.1 案例描述

展示世界地图,并用不同颜色表示不同国家的GDP数据。

2.2 代码示例

var myChart = echarts.init(document.getElementById('main'));

var option = {
    title: {
        text: '世界地图GDP展示',
        left: 'center'
    },
    tooltip: {
        trigger: 'item'
    },
    visualMap: {
        min: 0,
        max: 10000,
        left: 'left',
        top: 'bottom',
        text: ['高','低'],
        calculable: true
    },
    series: [
        {
            name: 'GDP',
            type: 'map',
            mapType: 'world',
            roam: false,
            label: {
                show: true
            },
            data: [
                {name: 'United States', value: 2000},
                {name: 'China', value: 3000},
                // ... 其他国家数据
            ]
        }
    ]
};

myChart.setOption(option);

案例三:省市区三级联动地图

3.1 案例描述

实现省市区三级联动地图,用户可以选择不同的省份、城市和区域,展示对应的数据。

3.2 代码示例

var myChart = echarts.init(document.getElementById('main'));

var option = {
    title: {
        text: '省市区三级联动地图',
        left: 'center'
    },
    tooltip: {
        trigger: 'item'
    },
    visualMap: {
        min: 0,
        max: 10000,
        left: 'left',
        top: 'bottom',
        text: ['高','低'],
        calculable: true
    },
    series: [
        {
            name: '人口',
            type: 'map',
            mapType: 'china',
            roam: false,
            label: {
                show: true
            },
            data: [
                {name: '北京市', value: 2000},
                {name: '上海市', value: 3000},
                // ... 其他省市区数据
            ]
        }
    ]
};

myChart.setOption(option);

案例四:动态地图展示

4.1 案例描述

展示动态地图,实时更新数据,如实时天气、交通状况等。

4.2 代码示例

var myChart = echarts.init(document.getElementById('main'));

var option = {
    title: {
        text: '动态地图展示',
        left: 'center'
    },
    tooltip: {
        trigger: 'item'
    },
    visualMap: {
        min: 0,
        max: 100,
        left: 'left',
        top: 'bottom',
        text: ['高','低'],
        calculable: true
    },
    series: [
        {
            name: '天气',
            type: 'map',
            mapType: 'china',
            roam: false,
            label: {
                show: true
            },
            data: [
                {name: '北京市', value: 80},
                {name: '上海市', value: 60},
                // ... 其他省市区数据
            ]
        }
    ]
};

myChart.setOption(option);

// 动态更新数据
setInterval(function () {
    option.series[0].data = [
        {name: '北京市', value: Math.round(Math.random() * 100)},
        {name: '上海市', value: Math.round(Math.random() * 100)},
        // ... 其他省市区数据
    ];
    myChart.setOption(option);
}, 1000);

案例五:地图热力图

5.1 案例描述

展示地图热力图,用颜色深浅表示不同区域的温度、人口密度等数据。

5.2 代码示例

var myChart = echarts.init(document.getElementById('main'));

var option = {
    title: {
        text: '地图热力图',
        left: 'center'
    },
    tooltip: {
        trigger: 'item'
    },
    visualMap: {
        min: 0,
        max: 100,
        left: 'left',
        top: 'bottom',
        text: ['高','低'],
        calculable: true
    },
    series: [
        {
            name: '人口密度',
            type: 'heatmap',
            coordinateSystem: 'geo',
            data: [
                {name: '北京市', value: [116.46,39.92,80]},
                {name: '上海市', value: [121.47,31.23,60]},
                // ... 其他省市区数据
            ]
        }
    ]
};

myChart.setOption(option);

案例六:地图迁徙图

6.1 案例描述

展示地图迁徙图,用线条表示不同区域的人口流动情况。

6.2 代码示例

var myChart = echarts.init(document.getElementById('main'));

var option = {
    title: {
        text: '地图迁徙图',
        left: 'center'
    },
    tooltip: {
        trigger: 'item'
    },
    series: [
        {
            name: '人口迁徙',
            type: 'lines',
            coordinateSystem: 'geo',
            data: [
                {name: '北京市', value: [116.46,39.92]},
                {name: '上海市', value: [121.47,31.23]},
                // ... 其他省市区数据
            ]
        }
    ]
};

myChart.setOption(option);

案例七:地图比例尺

7.1 案例描述

在地图上添加比例尺,方便用户了解地图的实际尺寸。

7.2 代码示例

var myChart = echarts.init(document.getElementById('main'));

var option = {
    title: {
        text: '地图比例尺',
        left: 'center'
    },
    tooltip: {
        trigger: 'item'
    },
    visualMap: {
        min: 0,
        max: 100,
        left: 'left',
        top: 'bottom',
        text: ['高','低'],
        calculable: true
    },
    series: [
        {
            name: '人口密度',
            type: 'map',
            mapType: 'china',
            roam: false,
            label: {
                show: true
            },
            data: [
                {name: '北京市', value: 80},
                {name: '上海市', value: 60},
                // ... 其他省市区数据
            ]
        },
        {
            name: '比例尺',
            type: 'custom',
            coordinateSystem: 'geo',
            renderItem: function (params, api) {
                var coord = api.coord([116.46, 39.92]);
                return {
                    type: 'text',
                    position: coord,
                    style: {
                        text: '1:1000000',
                        fill: '#fff',
                        stroke: '#000',
                        lineWidth: 1
                    }
                };
            }
        }
    ]
};

myChart.setOption(option);

案例八:地图缩放

8.1 案例描述

实现地图缩放功能,用户可以通过鼠标滚轮或双击地图进行缩放。

8.2 代码示例

var myChart = echarts.init(document.getElementById('main'));

var option = {
    title: {
        text: '地图缩放',
        left: 'center'
    },
    tooltip: {
        trigger: 'item'
    },
    series: [
        {
            name: '人口密度',
            type: 'map',
            mapType: 'china',
            roam: true,
            label: {
                show: true
            },
            data: [
                {name: '北京市', value: 80},
                {name: '上海市', value: 60},
                // ... 其他省市区数据
            ]
        }
    ]
};

myChart.setOption(option);

// 监听鼠标滚轮事件
myChart.on('mousedown', function (params) {
    var scale = myChart.getOption().series[0].roamScale;
    if (scale < 1) {
        myChart.dispatchAction({
            type: 'dataZoom',
            start: 0,
            end: 100
        });
    } else {
        myChart.dispatchAction({
            type: 'dataZoom',
            start: 100,
            end: 0
        });
    }
});

案例九:地图拖拽

9.1 案例描述

实现地图拖拽功能,用户可以拖动地图进行旋转和平移。

9.2 代码示例

var myChart = echarts.init(document.getElementById('main'));

var option = {
    title: {
        text: '地图拖拽',
        left: 'center'
    },
    tooltip: {
        trigger: 'item'
    },
    series: [
        {
            name: '人口密度',
            type: 'map',
            mapType: 'china',
            roam: true,
            label: {
                show: true
            },
            data: [
                {name: '北京市', value: 80},
                {name: '上海市', value: 60},
                // ... 其他省市区数据
            ]
        }
    ]
};

myChart.setOption(option);

// 监听鼠标事件
myChart.on('mousedown', function (params) {
    var startCoord = params.event.offsetX;
    var startCoordY = params.event.offsetY;
    var endCoord = 0;
    var endCoordY = 0;
    var moveCoord = function (event) {
        endCoord = event.offsetX;
        endCoordY = event.offsetY;
        myChart.dispatchAction({
            type: 'geoRoam',
            startCoord: [startCoord, startCoordY],
            endCoord: [endCoord, endCoordY]
        });
    };
    myChart.on('mousemove', moveCoord);
    document.onmouseup = function () {
        myChart.off('mousemove', moveCoord);
        document.onmouseup = null;
    };
});

案例十:地图点击事件

10.1 案例描述

实现地图点击事件,当用户点击某个省市区时,展示对应的数据。

10.2 代码示例

var myChart = echarts.init(document.getElementById('main'));

var option = {
    title: {
        text: '地图点击事件',
        left: 'center'
    },
    tooltip: {
        trigger: 'item'
    },
    series: [
        {
            name: '人口密度',
            type: 'map',
            mapType: 'china',
            roam: true,
            label: {
                show: true
            },
            data: [
                {name: '北京市', value: 80},
                {name: '上海市', value: 60},
                // ... 其他省市区数据
            ]
        }
    ]
};

myChart.setOption(option);

// 监听点击事件
myChart.on('click', function (params) {
    if (params.componentType === 'series') {
        alert(params.name + '的人口密度为:' + params.value);
    }
});

通过以上10个案例,相信你已经对ECharts地图图表的制作技巧有了初步的了解。在实际应用中,你可以根据自己的需求,对案例进行修改和扩展,制作出更加丰富和实用的地图图表。祝你在数据可视化领域取得更好的成绩!

分享到: