新手必看!轻松上手echarts地图图表,10个实用案例教学,让你轻松制作可视化地图!

2026-10-24 0 阅读

在这个数据可视化的时代,地图图表因其直观性和信息丰富性而受到许多开发者的青睐。ECharts 是一款功能强大的 JavaScript 图表库,支持丰富的图表类型,其中包括地图图表。对于新手来说,ECharts 地图图表的学习曲线可能会有些陡峭,但不用担心,以下将为你介绍10个实用案例,帮助你轻松上手并掌握 ECharts 地图图表的制作。

1. 简单地图展示

首先,我们来创建一个最简单的地图展示。这将帮助我们了解 ECharts 地图图表的基本使用方法。

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

// 指定图表的配置项和数据
var option = {
    title: {
        text: '中国地图'
    },
    tooltip: {},
    series: [{
        name: '销量',
        type: 'map',
        mapType: 'china',
        roam: false,
        label: {
            show: false
        },
        data: [{
            name: '北京',
            value: 200
        }]
    }]
};

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

在这个案例中,我们创建了一个包含中国地图的图表,并在北京标注了一个数据点。

2. 地图热力图

热力图可以用来表示数据在地理空间上的密集程度。以下是一个简单的热力图示例:

option = {
    title: {
        text: '中国省份热力图'
    },
    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: data
    }]
};

在这个案例中,我们使用 visualMap 组件来控制热力图的显示。

3. 动态地图

动态地图可以让用户交互地探索数据。以下是一个动态地图的例子:

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

// 动态数据
var data = [
    {name: '北京',value: Math.round(Math.random() * 1000)},
    {name: '天津',value: Math.round(Math.random() * 1000)},
    // ...
];

// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option = {
    title: {
        text: '动态地图'
    },
    tooltip: {
        trigger: 'item'
    },
    series: [{
        name: '数据',
        type: 'map',
        mapType: 'china',
        roam: true,
        label: {
            show: false
        },
        data: data
    }]
});

// 更新数据
setInterval(function () {
    var newData = [];
    for (var i = 0; i < data.length; i++) {
        newData.push({
            name: data[i].name,
            value: Math.round(Math.random() * 1000)
        });
    }
    myChart.setOption({
        series: [{
            data: newData
        }]
    });
}, 1000);

在这个案例中,我们每隔一秒钟更新一次数据。

4. 地图多维度展示

有时候,我们需要在地图上展示多个维度的数据。以下是一个多维度数据的地图展示案例:

option = {
    title: {
        text: '多维度地图展示'
    },
    tooltip: {
        trigger: 'item',
        formatter: '{a} <br/>{b}: {c}'
    },
    legend: {
        orient: 'vertical',
        left: 'left',
        data:['类别1', '类别2']
    },
    visualMap: {
        min: 0,
        max: 1000,
        left: 'left',
        top: 'bottom',
        text: ['高','低'],           // 文本,默认为数值文本
        calculable: true
    },
    series: [{
        name: '数据',
        type: 'map',
        mapType: 'china',
        roam: true,
        label: {
            show: true
        },
        data: data
    }]
};

在这个案例中,我们使用 legend 和 visualMap 组件来展示多个维度的数据。

5. 地图点击事件

地图图表的一个常见需求是用户点击某个区域后能够触发事件。以下是一个简单的点击事件示例:

myChart.on('click', function (params) {
    if (params.componentType === 'series') {
        alert(params.name);
    }
});

在这个案例中,当用户点击地图上的某个区域时,会弹出一个包含该区域名称的提示框。

6. 地图路径动画

有时候,我们需要在地图上展示一个路径动画。以下是一个路径动画的示例:

option = {
    title: {
        text: '地图路径动画'
    },
    tooltip: {
        trigger: 'item'
    },
    series: [{
        type: 'lines',
        coordinateSystem: 'geo',
        polyline: true,
        data: [
            // 路径数据
        ],
        silent: true,
        lineStyle: {
            curveness: 0.2
        },
        progressiveThreshold: 2000,
        progressive: true
    }, {
        type: 'effectScatter',
        coordinateSystem: 'geo',
        zlevel: 1,
        rippleEffect: {
            brushType: 'stroke'
        },
        label: {
            show: true,
            position: 'right',
            formatter: '{b}'
        },
        itemStyle: {
            color: '#f4e925',
            shadowBlur: 10,
            shadowColor: '#333'
        },
        data: [
            // 起点数据
        ]
    }]
};

在这个案例中,我们使用 lines 和 effectScatter 系列来展示路径动画。

7. 地图与折线图结合

地图图表不仅可以独立使用,还可以与折线图等其他图表类型结合。以下是一个地图与折线图结合的示例:

option = {
    title: {
        text: '地图与折线图结合'
    },
    tooltip: {
        trigger: 'axis'
    },
    legend: {
        data:['销量']
    },
    xAxis: {
        type: 'category',
        data: ['北京', '上海', '广州', '深圳', '杭州']
    },
    yAxis: {
        type: 'value'
    },
    series: [{
        name: '销量',
        type: 'line',
        data: [10, 20, 30, 40, 50]
    }]
};

在这个案例中,我们使用折线图来展示销量数据,并在地图上显示相应的地理位置。

8. 地图与散点图结合

散点图可以用来展示地理空间上的点数据。以下是一个地图与散点图结合的示例:

option = {
    title: {
        text: '地图与散点图结合'
    },
    tooltip: {
        trigger: 'item'
    },
    xAxis: {
        type: 'value'
    },
    yAxis: {
        type: 'value'
    },
    series: [{
        type: 'scatter',
        data: [
            // 数据点
        ],
        symbolSize: 10,
        markPoint: {
            data: [
                {type: 'max', name: '最大值'},
                {type: 'min', name: '最小值'}
            ],
            label: {
                normal: {
                    formatter: '{b}: {c}'
                }
            }
        },
        markLine: {
            data: [
                {type: 'average', name: '平均值'}
            ]
        }
    }]
};

在这个案例中,我们使用散点图来展示地理位置上的数据点。

9. 地图与饼图结合

饼图可以用来展示某个地理空间上各类数据的占比。以下是一个地图与饼图结合的示例:

option = {
    title: {
        text: '地图与饼图结合'
    },
    tooltip: {
        trigger: 'item'
    },
    legend: {
        orient: 'vertical',
        left: 'left',
        data:['类别1', '类别2']
    },
    series: [{
        name: '数据',
        type: 'pie',
        radius: ['30%', '70%'],
        avoidLabelOverlap: false,
        label: {
            show: false,
            position: 'center'
        },
        emphasis: {
            label: {
                show: true,
                fontSize: '30',
                fontWeight: 'bold'
            }
        },
        labelLine: {
            show: false
        },
        data: [
            {value: 335, name: '类别1'},
            {value: 310, name: '类别2'},
            // ...
        ]
    }]
};

在这个案例中,我们使用饼图来展示每个地理空间上的数据占比。

10. 地图与柱状图结合

柱状图可以用来展示地理空间上的柱状数据。以下是一个地图与柱状图结合的示例:

option = {
    title: {
        text: '地图与柱状图结合'
    },
    tooltip: {
        trigger: 'axis'
    },
    xAxis: {
        type: 'category',
        data: ['北京', '上海', '广州', '深圳', '杭州']
    },
    yAxis: {
        type: 'value'
    },
    series: [{
        name: '销量',
        type: 'bar',
        data: [10, 20, 30, 40, 50]
    }]
};

在这个案例中,我们使用柱状图来展示销量数据,并在地图上显示相应的地理位置。

以上是10个 ECharts 地图图表的实用案例教学。希望这些案例能够帮助你轻松上手并掌握 ECharts 地图图表的制作。在实际应用中,你可以根据自己的需求进行修改和扩展,创造出更多有趣和实用的地图图表。

分享到: