在数据可视化领域,地图图表因其直观性和信息承载量而备受青睐。ECharts 作为国内流行的开源可视化库,提供了丰富的地图图表绘制功能。今天,我们就来一起探索如何使用 ECharts 画出酷炫的地图图表,通过5个实用案例,让你轻松入门。
案例一:中国地图的省份分布
1.1 准备工作
首先,确保你已经安装了 ECharts 库。可以通过 CDN 链接引入:
<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.3.3/echarts.min.js"></script>
1.2 代码实现
以下是一个简单的中国地图省份分布案例:
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '中国地图省份分布'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 100,
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.3 代码解析
echarts.init()初始化图表实例。option对象中定义了图表的配置项。visualMap用于设置数据视觉映射组件。series数组中定义了图表的系列配置,type: 'map'表示绘制地图图表。mapType: 'china'设置地图类型为中国地图。data数组中包含了各个省份的数据。
案例二:世界地图的各国分布
2.1 准备工作
与世界地图案例不同的是,你需要下载世界地图的 JSON 数据。
2.2 代码实现
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '世界地图各国分布'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 100,
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)}
// ... 其他国家
]
}
]
};
myChart.setOption(option);
2.3 代码解析
与世界地图案例类似,只需将 mapType 设置为 'world',并修改 data 数组中的国家名称和值即可。
案例三:自定义地图
3.1 准备工作
自定义地图需要自己绘制地图的 SVG 路径,并将其转换为 ECharts 支持的 JSON 格式。
3.2 代码实现
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '自定义地图'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 100,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: '自定义地图',
type: 'map',
mapType: 'custom',
roam: true,
label: {
show: true
},
data: [
{name: '区域1', value: Math.round(Math.random() * 1000)},
{name: '区域2', value: Math.round(Math.random() * 1000)}
// ... 其他区域
],
// 自定义地图路径
geoCoordMap: {
'区域1': [116.391285, 39.907654],
'区域2': [121.473701, 31.230416]
// ... 其他区域的经纬度
}
}
]
};
myChart.setOption(option);
3.3 代码解析
mapType: 'custom'设置地图类型为自定义地图。geoCoordMap对象中定义了各个区域的经纬度。
案例四:热力地图
4.1 准备工作
热力地图需要准备经纬度数据以及对应的数值数据。
4.2 代码实现
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '热力地图'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 100,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: '热力地图',
type: 'heatmap',
coordinateSystem: 'geo',
data: [
[116.391285, 39.907654, Math.round(Math.random() * 1000)],
[121.473701, 31.230416, Math.round(Math.random() * 1000)]
// ... 其他点的经纬度和数值
]
}
]
};
myChart.setOption(option);
4.3 代码解析
type: 'heatmap'设置图表类型为热力地图。coordinateSystem: 'geo'设置坐标系统为地理坐标系。
案例五:地图上的折线图
5.1 准备工作
地图上的折线图需要准备经纬度数据、数值数据以及折线图的数据。
5.2 代码实现
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图上的折线图'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 100,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: '地图上的折线图',
type: 'lines',
coordinateSystem: 'geo',
data: [
[
[116.391285, 39.907654],
[121.473701, 31.230416]
]
// ... 其他折线图的数据
],
lineStyle: {
normal: {
width: 1,
opacity: 0.6,
curveness: 0.2
}
}
},
{
name: '点',
type: 'effectScatter',
coordinateSystem: 'geo',
data: [
[116.391285, 39.907654, Math.round(Math.random() * 1000)],
[121.473701, 31.230416, Math.round(Math.random() * 1000)]
// ... 其他点数据
],
symbolSize: function (val) {
return val / 10;
},
showEffectOn: 'render',
rippleEffect: {
brushType: 'stroke'
},
hoverAnimation: true,
label: {
normal: {
formatter: '{b}',
position: 'right',
show: true
}
},
itemStyle: {
normal: {
color: '#f4e925',
shadowBlur: 10,
shadowColor: '#333'
}
},
zlevel: 1
}
]
};
myChart.setOption(option);
5.3 代码解析
type: 'lines'设置图表类型为折线图。type: 'effectScatter'设置图表类型为带有动画效果的散点图。
通过以上5个案例,相信你已经掌握了使用 ECharts 画出酷炫地图图表的基本技巧。在实际应用中,你可以根据自己的需求,对这些案例进行修改和扩展。祝你在数据可视化领域取得更好的成绩!
