新手必学:轻松掌握ECharts地图图表,10个实用案例教学,快速上手!

2026-08-31 0 阅读

在数据可视化领域,ECharts 地图图表因其强大的功能和易用性而备受推崇。无论是展示地理分布、人口统计还是销售数据,ECharts 地图图表都能提供直观且丰富的视觉效果。对于新手来说,掌握 ECharts 地图图表并不复杂,以下将通过10个实用案例,帮助你快速上手!

案例一:中国地图展示

步骤1:引入ECharts库

<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.3.3/echarts.min.js"></script>

步骤2:创建HTML容器

<div id="chinaMap" style="width: 600px;height:400px;"></div>

步骤3:初始化地图

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

var option = {
    title: {
        text: '中国地图示例'
    },
    tooltip: {},
    visualMap: {
        min: 0,
        max: 1000,
        left: 'left',
        top: 'bottom',
        text: ['高','低'],           // 文本,默认为数值文本
        calculable: true
    },
    series: [
        {
            name: '销量',
            type: 'map',
            mapType: 'china',
            roam: true,
            label: {
                show: true
            },
            data: [
                {name: '北京',value: Math.round(Math.random() * 1000)},
                {name: '天津',value: Math.round(Math.random() * 1000)},
                // 其他省份...
            ]
        }
    ]
};

myChart.setOption(option);

案例二:世界地图展示

步骤1:引入ECharts库

与案例一相同。

步骤2:创建HTML容器

与案例一相同。

步骤3:初始化地图

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

var option = {
    title: {
        text: '世界地图示例'
    },
    tooltip: {},
    visualMap: {
        min: 0,
        max: 1000,
        left: 'left',
        top: 'bottom',
        text: ['高','低'],
        calculable: true
    },
    series: [
        {
            name: '销量',
            type: 'map',
            mapType: 'world',
            roam: true,
            label: {
                show: true
            },
            data: [
                {name: 'China',value: Math.round(Math.random() * 1000)},
                {name: 'United States',value: Math.round(Math.random() * 1000)},
                // 其他国家...
            ]
        }
    ]
};

myChart.setOption(option);

案例三:自定义地图

步骤1:引入ECharts库

与案例一相同。

步骤2:创建HTML容器

与案例一相同。

步骤3:定义地图数据

var geoCoordMap = {
    '上海': [121.4737, 31.2304],
    '东莞': [113.8955, 22.901],
    '东营': [118.7073, 37.5563],
    '中山': [113.4229, 22.478],
    // 其他城市...
};

var data = [
    {name: '上海',value: Math.round(Math.random() * 1000)},
    {name: '东莞',value: Math.round(Math.random() * 1000)},
    // 其他城市...
];

var option = {
    title: {
        text: '自定义地图示例'
    },
    tooltip: {},
    visualMap: {
        min: 0,
        max: 1000,
        left: 'left',
        top: 'bottom',
        text: ['高','低'],
        calculable: true
    },
    series: [
        {
            name: '销量',
            type: 'map',
            mapType: 'custom',
            roam: true,
            label: {
                show: true
            },
            itemStyle: {
                normal: {
                    areaColor: '#323c48',
                    borderColor: '#111'
                },
                emphasis: {
                    areaColor: '#2a333d'
                }
            },
            data: data,
            geoCoord: geoCoordMap
        }
    ]
};

案例四:多层级地图

步骤1:引入ECharts库

与案例一相同。

步骤2:创建HTML容器

与案例一相同。

步骤3:初始化地图

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

var option = {
    title: {
        text: '多层级地图示例'
    },
    tooltip: {},
    visualMap: {
        min: 0,
        max: 1000,
        left: 'left',
        top: 'bottom',
        text: ['高','低'],
        calculable: true
    },
    series: [
        {
            name: '销量',
            type: 'map',
            mapType: 'china',
            roam: true,
            label: {
                show: true
            },
            data: [
                {name: '北京',value: Math.round(Math.random() * 1000)},
                {name: '天津',value: Math.round(Math.random() * 1000)},
                // 其他省份...
            ]
        },
        {
            name: '市辖区',
            type: 'map',
            mapType: 'china',
            parent: '北京',
            roam: true,
            label: {
                show: true
            },
            data: [
                {name: '东城区',value: Math.round(Math.random() * 1000)},
                {name: '西城区',value: Math.round(Math.random() * 1000)},
                // 其他区...
            ]
        }
    ]
};

案例五:散点地图

步骤1:引入ECharts库

与案例一相同。

步骤2:创建HTML容器

与案例一相同。

步骤3:初始化地图

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

var option = {
    title: {
        text: '散点地图示例'
    },
    tooltip: {},
    visualMap: {
        min: 0,
        max: 1000,
        left: 'left',
        top: 'bottom',
        text: ['高','低'],
        calculable: true
    },
    series: [
        {
            name: '销量',
            type: 'scatter',
            coordinateSystem: 'geo',
            data: [
                {name: '北京',value: [116.46,39.92]},
                {name: '上海',value: [121.48,31.22]},
                // 其他城市...
            ]
        }
    ]
};

案例六:热力地图

步骤1:引入ECharts库

与案例一相同。

步骤2:创建HTML容器

与案例一相同。

步骤3:初始化地图

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

var option = {
    title: {
        text: '热力地图示例'
    },
    tooltip: {},
    visualMap: {
        min: 0,
        max: 1000,
        left: 'left',
        top: 'bottom',
        text: ['高','低'],
        calculable: true
    },
    series: [
        {
            name: '销量',
            type: 'heatmap',
            coordinateSystem: 'geo',
            data: [
                {name: '北京',value: [116.46,39.92]},
                {name: '上海',value: [121.48,31.22]},
                // 其他城市...
            ]
        }
    ]
};

案例七:气泡地图

步骤1:引入ECharts库

与案例一相同。

步骤2:创建HTML容器

与案例一相同。

步骤3:初始化地图

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

var option = {
    title: {
        text: '气泡地图示例'
    },
    tooltip: {},
    visualMap: {
        min: 0,
        max: 1000,
        left: 'left',
        top: 'bottom',
        text: ['高','低'],
        calculable: true
    },
    series: [
        {
            name: '销量',
            type: 'effectScatter',
            coordinateSystem: 'geo',
            data: [
                {name: '北京',value: [116.46,39.92]},
                {name: '上海',value: [121.48,31.22]},
                // 其他城市...
            ],
            symbolSize: function (val) {
                return val / 10;
            }
        }
    ]
};

案例八:多地图叠加

步骤1:引入ECharts库

与案例一相同。

步骤2:创建HTML容器

<div id="multiMapOverlay" style="width: 600px;height:400px;"></div>

步骤3:初始化地图

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

var option = {
    title: {
        text: '多地图叠加示例'
    },
    tooltip: {},
    visualMap: {
        min: 0,
        max: 1000,
        left: 'left',
        top: 'bottom',
        text: ['高','低'],
        calculable: true
    },
    series: [
        {
            name: '销量',
            type: 'map',
            mapType: 'china',
            roam: true,
            label: {
                show: true
            },
            data: [
                {name: '北京',value: Math.round(Math.random() * 1000)},
                {name: '天津',value: Math.round(Math.random() * 1000)},
                // 其他省份...
            ]
        },
        {
            name: '市辖区',
            type: 'map',
            mapType: 'china',
            parent: '北京',
            roam: true,
            label: {
                show: true
            },
            data: [
                {name: '东城区',value: Math.round(Math.random() * 1000)},
                {name: '西城区',value: Math.round(Math.random() * 1000)},
                // 其他区...
            ]
        }
    ]
};

案例九:动态地图

步骤1:引入ECharts库

与案例一相同。

步骤2:创建HTML容器

与案例一相同。

步骤3:初始化地图

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

var option = {
    title: {
        text: '动态地图示例'
    },
    tooltip: {},
    visualMap: {
        min: 0,
        max: 1000,
        left: 'left',
        top: 'bottom',
        text: ['高','低'],
        calculable: true
    },
    series: [
        {
            name: '销量',
            type: 'map',
            mapType: 'china',
            roam: true,
            label: {
                show: true
            },
            data: [
                {name: '北京',value: Math.round(Math.random() * 1000)},
                {name: '天津',value: Math.round(Math.random() * 1000)},
                // 其他省份...
            ]
        }
    ]
};

// 动态更新数据
setInterval(function () {
    var data = [
        {name: '北京',value: Math.round(Math.random() * 1000)},
        {name: '天津',value: Math.round(Math.random() * 1000)},
        // 其他省份...
    ];
    myChart.setOption({
        series: [{
            data: data
        }]
    });
}, 2000);

案例十:自定义地图交互

步骤1:引入ECharts库

与案例一相同。

步骤2:创建HTML容器

与案例一相同。

步骤3:初始化地图

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

var option = {
    title: {
        text: '自定义地图交互示例'
    },
    tooltip: {},
    visualMap: {
        min: 0,
        max: 1000,
        left: 'left',
        top: 'bottom',
        text: ['高','低'],
        calculable: true
    },
    series: [
        {
            name: '销量',
            type: 'map',
            mapType: 'china',
            roam: true,
            label: {
                show: true
            },
            data: [
                {name: '北京',value: Math.round(Math.random() * 1000)},
                {name: '天津',value: Math.round(Math.random() * 1000)},
                // 其他省份...
            ]
        }
    ]
};

// 自定义点击事件
myChart.on('click', function (params) {
    if (params.componentType === 'series') {
        alert('点击了 ' + params.name + ',销量为:' + params.value);
    }
});

通过以上10个实用案例,相信你已经对 ECharts 地图图表有了初步的了解。在实际应用中,你可以根据需求对案例进行修改和扩展,创造出更多有趣且实用的地图图表。祝你学习愉快!

分享到: