新手必看!轻松上手echarts地图图表,30个实用案例教你绘制炫酷地图

2026-09-09 0 阅读

ECharts 是一款使用 JavaScript 实现的开源可视化库,它能够帮助开发者轻松地生成各种类型的图表,包括地图图表。对于新手来说,ECharts 地图图表的功能强大且易于上手。本文将为你介绍 30 个实用案例,让你轻松绘制炫酷的地图图表。

1. 中国地图基本绘制

首先,我们需要创建一个基本的地图图表。以下是一个简单的例子:

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

// 指定图表的配置项和数据
var option = {
    title: {
        text: '中国地图'
    },
    tooltip: {
        trigger: 'item'
    },
    series: [
        {
            name: '中国',
            type: 'map',
            mapType: 'china',
            label: {
                show: true
            },
            data: [
                {name: '北京', value: Math.round(Math.random() * 1000)},
                // ... 其他省份数据
            ]
        }
    ]
};

// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);

2. 省份地图定制

你可以根据需要定制省份地图,比如设置不同省份的边框颜色和阴影:

{
    name: '四川',
    type: 'map',
    mapType: '四川',
    label: {
        show: true,
        color: '#fff'
    },
    itemStyle: {
        areaColor: '#f1f1f1',
        borderColor: '#dcdcdc',
        shadowColor: 'rgba(0, 0, 0, 0.1)',
        shadowBlur: 10
    },
    data: [
        {name: '成都', value: Math.round(Math.random() * 1000)}
    ]
}

3. 地图交互效果

ECharts 地图支持丰富的交互效果,如点击事件、鼠标悬停等。以下是一个点击省份切换显示数据的例子:

myChart.on('click', function (params) {
    if (params.componentType === 'series') {
        var name = params.name;
        var data = {
            name: name,
            value: Math.round(Math.random() * 1000)
        };
        var series = option.series[0];
        var targetIndex = series.data.findIndex(function (item) {
            return item.name === name;
        });
        if (targetIndex !== -1) {
            series.data[targetIndex] = data;
        } else {
            series.data.push(data);
        }
        myChart.setOption(option);
    }
});

4. 热力图效果

除了基本的地图绘制,ECharts 还支持绘制地图上的热力图效果。以下是一个热力图的例子:

{
    name: '中国',
    type: 'map',
    mapType: 'china',
    label: {
        show: false
    },
    itemStyle: {
        color: 'rgba(255, 215, 0, 0.5)'
    },
    data: [
        {name: '北京', value: Math.round(Math.random() * 1000)},
        // ... 其他省份数据
    ]
}

5. 地图动画效果

ECharts 地图支持丰富的动画效果,以下是一个地图动画效果的例子:

var option = {
    title: {
        text: '地图动画效果',
        left: 'center'
    },
    tooltip: {
        trigger: 'item'
    },
    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)},
                // ... 其他省份数据
            ]
        }
    ]
};

6. 地图缩放与拖动

ECharts 地图支持缩放和拖动操作,以下是一个示例代码:

myChart.on('click', function (params) {
    if (params.componentType === 'series') {
        var name = params.name;
        var series = option.series[0];
        var targetIndex = series.data.findIndex(function (item) {
            return item.name === name;
        });
        if (targetIndex !== -1) {
            var center = series.data[targetIndex].center;
            myChart.setOption({
                series: [{
                    coordinateSystem: 'geo',
                    emphasis: {
                        label: {
                            show: true
                        }
                    },
                    data: [{
                        name: name,
                        value: [center[0], center[1]]
                    }]
                }]
            });
        }
    }
});

7. 地图数据聚合

ECharts 地图支持数据聚合功能,以下是一个数据聚合的例子:

{
    name: '中国',
    type: 'map',
    mapType: 'china',
    label: {
        show: true
    },
    itemStyle: {
        color: 'rgba(255, 215, 0, 0.5)'
    },
    data: [
        {name: '北京', value: Math.round(Math.random() * 1000)},
        // ... 其他省份数据
    ]
}

8. 地图与折线图结合

ECharts 地图可以与折线图结合,以下是一个结合的例子:

{
    title: {
        text: '地图与折线图结合'
    },
    tooltip: {
        trigger: 'axis'
    },
    legend: {
        data: ['销量']
    },
    xAxis: {
        type: 'category',
        data: ['北京', '上海', '广东', '福建', '浙江']
    },
    yAxis: {
        type: 'value'
    },
    series: [
        {
            name: '销量',
            type: 'line',
            data: [120, 200, 150, 80, 70]
        }
    ]
}

9. 地图与散点图结合

ECharts 地图可以与散点图结合,以下是一个结合的例子:

{
    title: {
        text: '地图与散点图结合'
    },
    tooltip: {
        trigger: 'axis'
    },
    legend: {
        data: ['销量']
    },
    xAxis: {
        type: 'category',
        data: ['北京', '上海', '广东', '福建', '浙江']
    },
    yAxis: {
        type: 'value'
    },
    series: [
        {
            name: '销量',
            type: 'scatter',
            data: [
                [120, 200],
                [150, 80],
                [80, 70],
                [70, 80],
                [120, 90]
            ]
        }
    ]
}

10. 地图与柱状图结合

ECharts 地图可以与柱状图结合,以下是一个结合的例子:

{
    title: {
        text: '地图与柱状图结合'
    },
    tooltip: {
        trigger: 'axis'
    },
    legend: {
        data: ['销量']
    },
    xAxis: {
        type: 'category',
        data: ['北京', '上海', '广东', '福建', '浙江']
    },
    yAxis: {
        type: 'value'
    },
    series: [
        {
            name: '销量',
            type: 'bar',
            data: [
                [120, 200],
                [150, 80],
                [80, 70],
                [70, 80],
                [120, 90]
            ]
        }
    ]
}

11. 地图与饼图结合

ECharts 地图可以与饼图结合,以下是一个结合的例子:

{
    title: {
        text: '地图与饼图结合'
    },
    tooltip: {
        trigger: 'item'
    },
    legend: {
        orient: 'vertical',
        left: 'left',
        data: ['北京', '上海', '广东', '福建', '浙江']
    },
    series: [
        {
            name: '销量',
            type: 'pie',
            radius: '55%',
            center: ['50%', '60%'],
            data: [
                {value: 335, name: '北京'},
                {value: 310, name: '上海'},
                {value: 234, name: '广东'},
                {value: 135, name: '福建'},
                {value: 1548, name: '浙江'}
            ],
            emphasis: {
                itemStyle: {
                    shadowBlur: 10,
                    shadowOffsetX: 0,
                    shadowColor: 'rgba(0, 0, 0, 0.5)'
                }
            }
        }
    ]
}

12. 地图与雷达图结合

ECharts 地图可以与雷达图结合,以下是一个结合的例子:

{
    title: {
        text: '地图与雷达图结合'
    },
    tooltip: {
        trigger: 'axis'
    },
    legend: {
        data: ['销量']
    },
    xAxis: {
        type: 'category',
        data: ['北京', '上海', '广东', '福建', '浙江']
    },
    yAxis: {
        type: 'value'
    },
    series: [
        {
            name: '销量',
            type: 'radar',
            data: [
                [
                    55, 66, 77, 88, 99
                ],
                [
                    33, 44, 55, 66, 77
                ]
            ]
        }
    ]
}

13. 地图与折线图结合(动画效果)

ECharts 地图可以与折线图结合,并添加动画效果。以下是一个结合动画效果的例子:

{
    title: {
        text: '地图与折线图结合(动画效果)'
    },
    tooltip: {
        trigger: 'axis'
    },
    legend: {
        data: ['销量']
    },
    xAxis: {
        type: 'category',
        data: ['北京', '上海', '广东', '福建', '浙江']
    },
    yAxis: {
        type: 'value'
    },
    series: [
        {
            name: '销量',
            type: 'line',
            data: [
                [120, 200],
                [150, 80],
                [80, 70],
                [70, 80],
                [120, 90]
            ],
            markPoint: {
                data: [
                    {type: 'max', name: '最大值'},
                    {type: 'min', name: '最小值'}
                ]
            },
            markLine: {
                data: [
                    {type: 'average', name: '平均值'}
                ]
            }
        }
    ]
}

14. 地图与散点图结合(动画效果)

ECharts 地图可以与散点图结合,并添加动画效果。以下是一个结合动画效果的例子:

{
    title: {
        text: '地图与散点图结合(动画效果)'
    },
    tooltip: {
        trigger: 'axis'
    },
    legend: {
        data: ['销量']
    },
    xAxis: {
        type: 'category',
        data: ['北京', '上海', '广东', '福建', '浙江']
    },
    yAxis: {
        type: 'value'
    },
    series: [
        {
            name: '销量',
            type: 'scatter',
            data: [
                [120, 200],
                [150, 80],
                [80, 70],
                [70, 80],
                [120, 90]
            ],
            markPoint: {
                data: [
                    {type: 'max', name: '最大值'},
                    {type: 'min', name: '最小值'}
                ]
            },
            markLine: {
                data: [
                    {type: 'average', name: '平均值'}
                ]
            }
        }
    ]
}

15. 地图与柱状图结合(动画效果)

ECharts 地图可以与柱状图结合,并添加动画效果。以下是一个结合动画效果的例子:

{
    title: {
        text: '地图与柱状图结合(动画效果)'
    },
    tooltip: {
        trigger: 'axis'
    },
    legend: {
        data: ['销量']
    },
    xAxis: {
        type: 'category',
        data: ['北京', '上海', '广东', '福建', '浙江']
    },
    yAxis: {
        type: 'value'
    },
    series: [
        {
            name: '销量',
            type: 'bar',
            data: [
                [120, 200],
                [150, 80],
                [80, 70],
                [70, 80],
                [120, 90]
            ],
            markPoint: {
                data: [
                    {type: 'max', name: '最大值'},
                    {type: 'min', name: '最小值'}
                ]
            },
            markLine: {
                data: [
                    {type: 'average', name: '平均值'}
                ]
            }
        }
    ]
}

16. 地图与饼图结合(动画效果)

ECharts 地图可以与饼图结合,并添加动画效果。以下是一个结合动画效果的例子:

{
    title: {
        text: '地图与饼图结合(动画效果)'
    },
    tooltip: {
        trigger: 'item'
    },
    legend: {
        orient: 'vertical',
        left: 'left',
        data: ['北京', '上海', '广东', '福建', '浙江']
    },
    series: [
        {
            name: '销量',
            type: 'pie',
            radius: '55%',
            center: ['50%', '60%'],
            data: [
                {value: 335, name: '北京'},
                {value: 310, name: '上海'},
                {value: 234, name: '广东'},
                {value: 135, name: '福建'},
                {value: 1548, name: '浙江'}
            ],
            emphasis: {
                itemStyle: {
                    shadowBlur: 10,
                    shadowOffsetX: 0,
                    shadowColor: 'rgba(0, 0, 0, 0.5)'
                }
            }
        }
    ]
}

17. 地图与雷达图结合(动画效果)

ECharts 地图可以与雷达图结合,并添加动画效果。以下是一个结合动画效果的例子:

{
    title: {
        text: '地图与雷达图结合(动画效果)'
    },
    tooltip: {
        trigger: 'axis'
    },
    legend: {
        data: ['销量']
    },
    xAxis: {
        type: 'category',
        data: ['北京', '上海', '广东', '福建', '浙江']
    },
    yAxis: {
        type: 'value'
    },
    series: [
        {
            name: '销量',
            type: 'radar',
            data: [
                [
                    55, 66, 77, 88, 99
                ],
                [
                    33, 44, 55, 66, 77
                ]
            ]
        }
    ]
}

18. 地图与折线图结合(动态数据)

ECharts 地图可以与折线图结合,并动态更新数据。以下是一个动态更新数据的例子:

// 初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));

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

// 每隔1秒更新一次数据
setInterval(updateData, 1000);

19. 地图与散点图结合(动态数据)

ECharts 地图可以与散点图结合,并动态更新数据。以下是一个动态更新数据的例子:

// 初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));

// 动态更新数据
function updateData() {
    var data = [
        [120, 200],
        [150, 80],
        [80, 70],
        [70, 80],
        [120, 90]
    ];
    myChart.setOption({
        series: [{
            data: data
        }]
    });
}

// 每隔1秒更新一次数据
setInterval(updateData, 1000);

20. 地图与柱状图结合(动态数据)

ECharts 地图可以与柱状图结合,并动态更新数据。以下是一个动态更新数据的例子:

// 初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));

// 动态更新数据
function updateData() {
    var data = [
        [120, 200],
        [150, 80],
        [80, 70],
        [70, 80],
        [120, 90]
    ];
    myChart.setOption({
        series: [{
            data: data
        }]
    });
}

// 每隔1秒更新一次数据
setInterval(updateData, 1000);

21. 地图与饼图结合(动态数据)

ECharts 地图可以与饼图结合,并动态更新数据。以下是一个动态更新数据的例子:

”`javascript // 初始化echarts实例 var myChart = echarts.init(document.getElementById(‘main’));

// 动态更新数据 function updateData() {

var data = [
    {value: Math.round(Math.random() * 1000), name: '北京'},
    {value: Math.round(Math.random() * 1000), name: '上海'},
    {value: Math.round(Math.random() * 1000), name: '广东'},
    {value: Math.round(Math.random() * 1000), name: '福建'},
    {value: Math.round(Math.random() * 1000), name: '浙江'}
];
myChart.setOption({
    series: [{
        data: data
    }]
});

}

// 每隔1秒更新一次数据

分享到: