在数据可视化领域,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 地图图表有了初步的了解。在实际应用中,你可以根据需求对案例进行修改和扩展,创造出更多有趣且实用的地图图表。祝你学习愉快!