地图图表作为一种直观展示地理分布和空间关系的数据可视化工具,在各个领域都有广泛的应用。ECharts作为一款强大的前端图表库,提供了丰富的地图图表功能。本文将详细介绍30个ECharts地图图表的实用案例,帮助您轻松掌握地图图表的制作技巧,提升数据可视化的效果。
案例一:中国省份地图
案例分析:展示中国各个省份的名称和简称。
// 示例代码
var chart = echarts.init(document.getElementById('chinaMap'));
var option = {
title: {
text: '中国省份地图',
subtext: '数据来源:某网站',
left: 'center'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '中国',
type: 'map',
mapType: 'china',
label: {
show: true
},
data: [
{name: '北京', value: 100},
{name: '上海', value: 200},
// ... 其他省份
]
}
]
};
chart.setOption(option);
案例二:全球地图
案例分析:展示全球各个国家和地区的名称和简称。
// 示例代码
var chart = echarts.init(document.getElementById('worldMap'));
var option = {
title: {
text: '全球地图',
subtext: '数据来源:某网站',
left: 'center'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '全球',
type: 'map',
mapType: 'world',
label: {
show: true
},
data: [
{name: '美国', value: 100},
{name: '英国', value: 200},
// ... 其他国家和地区
]
}
]
};
chart.setOption(option);
案例三:自定义地图
案例分析:展示自定义地图,例如某个城市的区域分布。
// 示例代码
var chart = echarts.init(document.getElementById('customMap'));
var option = {
title: {
text: '自定义地图',
subtext: '数据来源:某网站',
left: 'center'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '自定义区域',
type: 'map',
mapType: 'custom',
label: {
show: true
},
data: [
{name: '区域A', value: 100},
{name: '区域B', value: 200},
// ... 其他区域
]
}
]
};
chart.setOption(option);
案例四:散点地图
案例分析:展示散点地图,例如城市人口分布。
// 示例代码
var chart = echarts.init(document.getElementById('scatterMap'));
var option = {
title: {
text: '散点地图',
subtext: '数据来源:某网站',
left: 'center'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '人口分布',
type: 'scatter',
coordinateSystem: 'geo',
data: [
{name: '北京', value: [116.46, 39.92]},
{name: '上海', value: [121.47, 31.23]},
// ... 其他城市
]
}
]
};
chart.setOption(option);
案例五:热力地图
案例分析:展示热力地图,例如某个城市的温度分布。
// 示例代码
var chart = echarts.init(document.getElementById('heatmapMap'));
var option = {
title: {
text: '热力地图',
subtext: '数据来源:某网站',
left: 'center'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '温度分布',
type: 'heatmap',
coordinateSystem: 'geo',
data: [
{name: '北京', value: [116.46, 39.92, 30]},
{name: '上海', value: [121.47, 31.23, 20]},
// ... 其他城市
]
}
]
};
chart.setOption(option);
案例六:三维地图
案例分析:展示三维地图,例如城市高楼分布。
// 示例代码
var chart = echarts.init(document.getElementById('3DMap'));
var option = {
title: {
text: '三维地图',
subtext: '数据来源:某网站',
left: 'center'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '高楼分布',
type: 'bar3D',
coordinateSystem: 'geo',
data: [
{name: '北京', value: [116.46, 39.92, 200]},
{name: '上海', value: [121.47, 31.23, 150]},
// ... 其他城市
]
}
]
};
chart.setOption(option);
案例七:地图动画
案例分析:展示地图动画效果,例如世界地图的旋转和放大。
// 示例代码
var chart = echarts.init(document.getElementById('animationMap'));
var option = {
title: {
text: '地图动画',
subtext: '数据来源:某网站',
left: 'center'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '世界地图',
type: 'map',
mapType: 'world',
animation: true,
label: {
show: true
},
data: [
{name: '美国', value: 100},
{name: '英国', value: 200},
// ... 其他国家和地区
]
}
]
};
chart.setOption(option);
案例八:地图点击事件
案例分析:展示地图点击事件,例如点击某个国家或地区获取详细信息。
// 示例代码
var chart = echarts.init(document.getElementById('clickMap'));
var option = {
title: {
text: '地图点击事件',
subtext: '数据来源:某网站',
left: 'center'
},
tooltip: {
trigger: 'item',
formatter: function (params) {
return params.name + ':' + params.value;
}
},
series: [
{
name: '世界地图',
type: 'map',
mapType: 'world',
label: {
show: true
},
data: [
{name: '美国', value: 100},
{name: '英国', value: 200},
// ... 其他国家和地区
]
}
]
};
chart.setOption(option);
chart.on('click', function (params) {
console.log(params.name + ':' + params.value);
});
案例九:地图缩放和旋转
案例分析:展示地图缩放和旋转功能,例如通过鼠标滚轮和拖动调整地图视角。
// 示例代码
var chart = echarts.init(document.getElementById('zoomAndRotateMap'));
var option = {
title: {
text: '地图缩放和旋转',
subtext: '数据来源:某网站',
left: 'center'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '世界地图',
type: 'map',
mapType: 'world',
zoom: 1.2, // 初始缩放比例
rotation: 45, // 初始旋转角度
label: {
show: true
},
data: [
{name: '美国', value: 100},
{name: '英国', value: 200},
// ... 其他国家和地区
]
}
]
};
chart.setOption(option);
案例十:地图自定义颜色
案例分析:展示地图自定义颜色功能,例如根据不同数值范围设置颜色。
// 示例代码
var chart = echarts.init(document.getElementById('customColorMap'));
var option = {
title: {
text: '地图自定义颜色',
subtext: '数据来源:某网站',
left: 'center'
},
tooltip: {
trigger: 'item',
formatter: '{b}: {c}'
},
visualMap: {
min: 0,
max: 1000,
left: 'left',
top: 'bottom',
text: ['高', '低'], // 文本,默认为数值文本
calculable: true
},
series: [
{
name: '世界地图',
type: 'map',
mapType: 'world',
label: {
show: true
},
data: [
{name: '美国', value: 100},
{name: '英国', value: 200},
// ... 其他国家和地区
]
}
]
};
chart.setOption(option);
案例十一:地图交互效果
案例分析:展示地图交互效果,例如点击某个国家或地区弹出信息框。
// 示例代码
var chart = echarts.init(document.getElementById('interactiveMap'));
var option = {
title: {
text: '地图交互效果',
subtext: '数据来源:某网站',
left: 'center'
},
tooltip: {
trigger: 'item',
formatter: function (params) {
return params.name + '<br>' + '人口:' + params.value;
}
},
series: [
{
name: '世界地图',
type: 'map',
mapType: 'world',
label: {
show: true
},
data: [
{name: '美国', value: 100},
{name: '英国', value: 200},
// ... 其他国家和地区
]
}
]
};
chart.setOption(option);
chart.on('click', function (params) {
var infoBox = document.createElement('div');
infoBox.style.position = 'absolute';
infoBox.style.left = params.pageX + 'px';
infoBox.style.top = params.pageY + 'px';
infoBox.style.background = '#fff';
infoBox.style.padding = '10px';
infoBox.innerHTML = params.name + '<br>' + '人口:' + params.value;
document.body.appendChild(infoBox);
setTimeout(function () {
document.body.removeChild(infoBox);
}, 3000);
});
案例十二:地图层级切换
案例分析:展示地图层级切换功能,例如切换到卫星地图或三维地图。
// 示例代码
var chart = echarts.init(document.getElementById('levelSwitchMap'));
var option = {
title: {
text: '地图层级切换',
subtext: '数据来源:某网站',
left: 'center'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '世界地图',
type: 'map',
mapType: 'world',
label: {
show: true
},
data: [
{name: '美国', value: 100},
{name: '英国', value: 200},
// ... 其他国家和地区
]
}
]
};
chart.setOption(option);
chart.on('click', function (params) {
if (chart.getOption().series[0].mapType === 'world') {
chart.setOption({
series: [{
mapType: 'satellite'
}]
});
} else {
chart.setOption({
series: [{
mapType: 'world'
}]
});
}
});
案例十三:地图多数据层
案例分析:展示地图多数据层功能,例如叠加多个数据层,例如人口、GDP等。
// 示例代码
var chart = echarts.init(document.getElementById('multiLayerMap'));
var option = {
title: {
text: '地图多数据层',
subtext: '数据来源:某网站',
left: 'center'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '人口分布',
type: 'map',
mapType: 'world',
label: {
show: true
},
data: [
{name: '美国', value: 100},
{name: '英国', value: 200},
// ... 其他国家和地区
]
},
{
name: 'GDP分布',
type: 'map',
mapType: 'world',
label: {
show: true
},
data: [
{name: '美国', value: 200},
{name: '英国', value: 300},
// ... 其他国家和地区
]
}
]
};
chart.setOption(option);
案例十四:地图数据动态更新
案例分析:展示地图数据动态更新功能,例如实时更新某个国家的经济数据。
// 示例代码
var chart = echarts.init(document.getElementById('dynamicMap'));
var option = {
title: {
text: '地图数据动态更新',
subtext: '数据来源:某网站',
left: 'center'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '世界地图',
type: 'map',
mapType: 'world',
label: {
show: true
},
data: [
{name: '美国', value: 100},
{name: '英国', value: 200},
// ... 其他国家和地区
]
}
]
};
chart.setOption(option);
// 动态更新数据
function updateData() {
chart.setOption({
series: [{
data: [
{name: '美国', value: 150},
{name: '英国', value: 250},
// ... 其他国家和地区
]
}]
});
}
// 每5秒更新一次数据
setInterval(updateData, 5000);
案例十五:地图数据筛选
案例分析:展示地图数据筛选功能,例如筛选出人口超过1000万的国家或地区。
// 示例代码
var chart = echarts.init(document.getElementById('filterMap'));
var option = {
title: {
text: '地图数据筛选',
subtext: '数据来源:某网站',
left: 'center'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '世界地图',
type: 'map',
mapType: 'world',
label: {
show: true
},
data: [
{name: '美国', value: 100000000},
{name: '英国', value: 80000000},
// ... 其他国家和地区
]
}
]
};
chart.setOption(option);
// 筛选人口超过1000万的国家或地区
chart.dispatchAction({
type: 'dataZoom',
start: 0,
end: 100
});
案例十六:地图数据排序
案例分析:展示地图数据排序功能,例如按照人口数量降序排列。
// 示例代码
var chart = echarts.init(document.getElementById('sortMap'));
var option = {
title: {
text: '地图数据排序',
subtext: '数据来源:某网站',
left: 'center'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '世界地图',
type: 'map',
mapType: 'world',
label: {
show: true
},
data: [
{name: '美国', value: 100000000},
{name: '英国', value: 80000000},
// ... 其他国家和地区
]
}
]
};
chart.setOption(option);
// 按人口数量降序排列
chart.setOption({
series: [{
data: chart.getOption().series[0].data.sort(function (a, b) {
return b.value - a.value;
})
}]
});
案例十七:地图数据聚合
案例分析:展示地图数据聚合功能,例如将相邻的省份合并成一个更大的区域。
// 示例代码
var chart = echarts.init(document.getElementById('aggregateMap'));
var option = {
title: {
text: '地图数据聚合',
subtext: '数据来源:某网站',
left: 'center'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '中国省份地图',
type: 'map',
mapType: 'china',
label: {
show: true
},
data: [
{name: '北京', value: 100},
{name: '天津', value: 200},
// ... 其他省份
]
}
]
};
chart.setOption(option);
// 将相邻的省份合并成一个更大的区域
chart.setOption({
series: [{
data: chart.getOption().series[0].data.map(function (item) {
var neighbor = null;
if (item.name === '北京') {
neighbor = chart.getOption().series[0].data.find(function (item) {
return item.name === '天津';
});
}
if (neighbor) {
return {
name: '京津冀',
value: item.value + neighbor.value
};
}
return item;
})
}]
};
案例十八:地图数据可视化效果增强
案例分析:展示地图数据可视化效果增强,例如使用渐变色填充和边框高亮显示。
”`javascript // 示例代码 var chart = echarts.init(document.getElementById(‘visualEffectMap’));
var option = {
title: {
text: '地图数据可视化效果增强',
subtext: '数据来源:某网站',
left: 'center'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 1000,
left: 'left',
top: 'bottom',
calculable: true,
seriesIndex: 0,
inRange: {
color: ['#3136
