从新手到高手,带你轻松上手echarts地图图表制作实例解析

2026-11-10 0 阅读

引言

地图图表是一种直观、生动的数据展示方式,能够帮助我们更好地理解地理分布和数据关联。ECharts 是一款功能强大的 JavaScript 图表库,支持多种图表类型,包括地图图表。本文将带领新手一步步学习如何使用 ECharts 制作地图图表,并通过实例解析,让你轻松上手。

第一节:ECharts 地图图表简介

1.1 ECharts 地图图表概述

ECharts 地图图表是基于地理坐标系统,将数据与地图元素结合,以可视化形式展示地理分布和数据关联的图表。它支持多种地图类型,如中国地图、世界地图、行政区划地图等。

1.2 ECharts 地图图表的特点

  • 支持多种地图类型和自定义地图;
  • 数据可视化效果丰富,交互性强;
  • 支持多种数据格式,如 JSON、GeoJSON 等;
  • 良好的兼容性和扩展性。

第二节:ECharts 地图图表制作基础

2.1 初始化 ECharts 实例

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

2.2 配置地图图表

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

2.3 渲染地图图表

myChart.setOption(option);

第三节:ECharts 地图图表进阶

3.1 自定义地图

ECharts 支持自定义地图,你可以通过 GeoJSON 格式定义地图区域。

var geoCoordMap = {
    '北京': [116.46,39.92],
    '上海': [121.48,31.22],
    // ... 其他城市坐标
};

var option = {
    // ... 其他配置
    series: [
        {
            // ... 其他配置
            data: [
                {name: '北京',value: Math.round(Math.random() * 1000)},
                {name: '上海',value: Math.round(Math.random() * 1000)},
                // ... 其他城市数据
            ],
            // 自定义坐标
            coordinateSystem: 'geo',
            geoIndex: 0,
            // 根据城市名称获取坐标
            itemStyle: {
                normal: {
                    label: {
                        show: true,
                        position: 'right',
                        formatter: function (params) {
                            return params.name + '\n' + params.value;
                        }
                    }
                },
                emphasis: {
                    label: {
                        show: true
                    }
                }
            },
            // 根据城市名称获取坐标
            label: {
                normal: {
                    show: true,
                    position: 'right',
                    formatter: function (params) {
                        return params.name;
                    }
                },
                emphasis: {
                    show: true
                }
            },
            // 根据城市名称获取坐标
            zlevel: 1,
            // 根据城市名称获取坐标
            data: [
                {name: '北京',value: Math.round(Math.random() * 1000)},
                {name: '上海',value: Math.round(Math.random() * 1000)},
                // ... 其他城市数据
            ]
        }
    ]
};

3.2 动画效果

ECharts 支持地图图表的动画效果,可以通过 animation 属性进行配置。

var option = {
    // ... 其他配置
    series: [
        {
            // ... 其他配置
            animation: true,
            // 动画效果配置
            animationDuration: 1000,
            animationEasing: 'cubicInOut'
        }
    ]
};

第四节:实例解析

4.1 实例一:中国地图

<!DOCTYPE html>
<html style="height: 100%">
<head>
    <meta charset="utf-8">
</head>
<body style="height: 100%; margin: 0">
<div id="main" style="height: 100%"></div>
<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.0.0/echarts.min.js"></script>
<script type="text/javascript">
    var myChart = echarts.init(document.getElementById('main'));
    var option = {
        title: {
            text: '中国地图示例'
        },
        tooltip: {},
        visualMap: {
            min: 0,
            max: 100,
            left: 'left',
            top: 'bottom',
            text: ['高','低'],
            calculable: true
        },
        series: [
            {
                name: '数据',
                type: 'map',
                mapType: 'china',
                roam: true,
                label: {
                    normal: {
                        show: true
                    },
                    emphasis: {
                        show: true
                    }
                },
                data: [
                    {name: '北京',value: Math.round(Math.random() * 1000)},
                    {name: '上海',value: Math.round(Math.random() * 1000)},
                    // ... 其他城市数据
                ]
            }
        ]
    };
    myChart.setOption(option);
</script>
</body>
</html>

4.2 实例二:自定义地图

<!DOCTYPE html>
<html style="height: 100%">
<head>
    <meta charset="utf-8">
</head>
<body style="height: 100%; margin: 0">
<div id="main" style="height: 100%"></div>
<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.0.0/echarts.min.js"></script>
<script type="text/javascript">
    var myChart = echarts.init(document.getElementById('main'));
    var geoCoordMap = {
        '北京': [116.46,39.92],
        '上海': [121.48,31.22],
        // ... 其他城市坐标
    };
    var option = {
        title: {
            text: '自定义地图示例'
        },
        tooltip: {},
        visualMap: {
            min: 0,
            max: 100,
            left: 'left',
            top: 'bottom',
            text: ['高','低'],
            calculable: true
        },
        series: [
            {
                name: '数据',
                type: 'map',
                mapType: 'custom',
                roam: true,
                label: {
                    normal: {
                        show: true
                    },
                    emphasis: {
                        show: true
                    }
                },
                coordinateSystem: 'geo',
                geoIndex: 0,
                itemStyle: {
                    normal: {
                        label: {
                            show: true,
                            position: 'right',
                            formatter: function (params) {
                                return params.name + '\n' + params.value;
                            }
                        }
                    },
                    emphasis: {
                        label: {
                            show: true
                        }
                    }
                },
                label: {
                    normal: {
                        show: true,
                        position: 'right',
                        formatter: function (params) {
                            return params.name;
                        }
                    },
                    emphasis: {
                        show: true
                    }
                },
                zlevel: 1,
                data: [
                    {name: '北京',value: Math.round(Math.random() * 1000)},
                    {name: '上海',value: Math.round(Math.random() * 1000)},
                    // ... 其他城市数据
                ]
            }
        ]
    };
    myChart.setOption(option);
</script>
</body>
</html>

结语

通过本文的学习,相信你已经对 ECharts 地图图表制作有了初步的了解。在实际应用中,你可以根据需求调整地图类型、数据格式、动画效果等,让地图图表更加生动、直观。不断实践和探索,你将逐渐成为 ECharts 地图图表制作的高手。

分享到: