ECharts 是一款使用 JavaScript 实现的开源可视化库,它可以帮助用户将数据通过丰富的图表进行展示。其中,地图图表以其直观性和地理空间感,在数据可视化领域有着广泛的应用。本文将为你介绍10个实用的ECharts地图图表案例,帮助你快速掌握地图图表的制作技巧,让你的数据可视化更加高效。
案例一:中国地图展示
1.1 案例描述
展示中国地图,并用不同颜色表示不同省份的GDP数据。
1.2 代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '中国地图GDP展示',
left: 'center'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 10000,
left: 'left',
top: 'bottom',
text: ['高','低'], // 文本,默认为数值文本
calculable: true
},
series: [
{
name: 'GDP',
type: 'map',
mapType: 'china',
roam: false,
label: {
show: true
},
data: [
{name: '北京', value: 2000},
{name: '上海', value: 3000},
// ... 其他省份数据
]
}
]
};
myChart.setOption(option);
案例二:世界地图展示
2.1 案例描述
展示世界地图,并用不同颜色表示不同国家的GDP数据。
2.2 代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '世界地图GDP展示',
left: 'center'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 10000,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: 'GDP',
type: 'map',
mapType: 'world',
roam: false,
label: {
show: true
},
data: [
{name: 'United States', value: 2000},
{name: 'China', value: 3000},
// ... 其他国家数据
]
}
]
};
myChart.setOption(option);
案例三:省市区三级联动地图
3.1 案例描述
实现省市区三级联动地图,用户可以选择不同的省份、城市和区域,展示对应的数据。
3.2 代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '省市区三级联动地图',
left: 'center'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 10000,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: '人口',
type: 'map',
mapType: 'china',
roam: false,
label: {
show: true
},
data: [
{name: '北京市', value: 2000},
{name: '上海市', value: 3000},
// ... 其他省市区数据
]
}
]
};
myChart.setOption(option);
案例四:动态地图展示
4.1 案例描述
展示动态地图,实时更新数据,如实时天气、交通状况等。
4.2 代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '动态地图展示',
left: 'center'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 100,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: '天气',
type: 'map',
mapType: 'china',
roam: false,
label: {
show: true
},
data: [
{name: '北京市', value: 80},
{name: '上海市', value: 60},
// ... 其他省市区数据
]
}
]
};
myChart.setOption(option);
// 动态更新数据
setInterval(function () {
option.series[0].data = [
{name: '北京市', value: Math.round(Math.random() * 100)},
{name: '上海市', value: Math.round(Math.random() * 100)},
// ... 其他省市区数据
];
myChart.setOption(option);
}, 1000);
案例五:地图热力图
5.1 案例描述
展示地图热力图,用颜色深浅表示不同区域的温度、人口密度等数据。
5.2 代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图热力图',
left: 'center'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 100,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: '人口密度',
type: 'heatmap',
coordinateSystem: 'geo',
data: [
{name: '北京市', value: [116.46,39.92,80]},
{name: '上海市', value: [121.47,31.23,60]},
// ... 其他省市区数据
]
}
]
};
myChart.setOption(option);
案例六:地图迁徙图
6.1 案例描述
展示地图迁徙图,用线条表示不同区域的人口流动情况。
6.2 代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图迁徙图',
left: 'center'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '人口迁徙',
type: 'lines',
coordinateSystem: 'geo',
data: [
{name: '北京市', value: [116.46,39.92]},
{name: '上海市', value: [121.47,31.23]},
// ... 其他省市区数据
]
}
]
};
myChart.setOption(option);
案例七:地图比例尺
7.1 案例描述
在地图上添加比例尺,方便用户了解地图的实际尺寸。
7.2 代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图比例尺',
left: 'center'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 100,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: '人口密度',
type: 'map',
mapType: 'china',
roam: false,
label: {
show: true
},
data: [
{name: '北京市', value: 80},
{name: '上海市', value: 60},
// ... 其他省市区数据
]
},
{
name: '比例尺',
type: 'custom',
coordinateSystem: 'geo',
renderItem: function (params, api) {
var coord = api.coord([116.46, 39.92]);
return {
type: 'text',
position: coord,
style: {
text: '1:1000000',
fill: '#fff',
stroke: '#000',
lineWidth: 1
}
};
}
}
]
};
myChart.setOption(option);
案例八:地图缩放
8.1 案例描述
实现地图缩放功能,用户可以通过鼠标滚轮或双击地图进行缩放。
8.2 代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图缩放',
left: 'center'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '人口密度',
type: 'map',
mapType: 'china',
roam: true,
label: {
show: true
},
data: [
{name: '北京市', value: 80},
{name: '上海市', value: 60},
// ... 其他省市区数据
]
}
]
};
myChart.setOption(option);
// 监听鼠标滚轮事件
myChart.on('mousedown', function (params) {
var scale = myChart.getOption().series[0].roamScale;
if (scale < 1) {
myChart.dispatchAction({
type: 'dataZoom',
start: 0,
end: 100
});
} else {
myChart.dispatchAction({
type: 'dataZoom',
start: 100,
end: 0
});
}
});
案例九:地图拖拽
9.1 案例描述
实现地图拖拽功能,用户可以拖动地图进行旋转和平移。
9.2 代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图拖拽',
left: 'center'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '人口密度',
type: 'map',
mapType: 'china',
roam: true,
label: {
show: true
},
data: [
{name: '北京市', value: 80},
{name: '上海市', value: 60},
// ... 其他省市区数据
]
}
]
};
myChart.setOption(option);
// 监听鼠标事件
myChart.on('mousedown', function (params) {
var startCoord = params.event.offsetX;
var startCoordY = params.event.offsetY;
var endCoord = 0;
var endCoordY = 0;
var moveCoord = function (event) {
endCoord = event.offsetX;
endCoordY = event.offsetY;
myChart.dispatchAction({
type: 'geoRoam',
startCoord: [startCoord, startCoordY],
endCoord: [endCoord, endCoordY]
});
};
myChart.on('mousemove', moveCoord);
document.onmouseup = function () {
myChart.off('mousemove', moveCoord);
document.onmouseup = null;
};
});
案例十:地图点击事件
10.1 案例描述
实现地图点击事件,当用户点击某个省市区时,展示对应的数据。
10.2 代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图点击事件',
left: 'center'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '人口密度',
type: 'map',
mapType: 'china',
roam: true,
label: {
show: true
},
data: [
{name: '北京市', value: 80},
{name: '上海市', value: 60},
// ... 其他省市区数据
]
}
]
};
myChart.setOption(option);
// 监听点击事件
myChart.on('click', function (params) {
if (params.componentType === 'series') {
alert(params.name + '的人口密度为:' + params.value);
}
});
通过以上10个案例,相信你已经对ECharts地图图表的制作技巧有了初步的了解。在实际应用中,你可以根据自己的需求,对案例进行修改和扩展,制作出更加丰富和实用的地图图表。祝你在数据可视化领域取得更好的成绩!