在这个数据可视化的时代,地图图表因其直观性和信息丰富性而受到许多开发者的青睐。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 地图图表的制作。在实际应用中,你可以根据自己的需求进行修改和扩展,创造出更多有趣和实用的地图图表。