ECharts 是一个使用 JavaScript 实现的开源可视化库,它提供了丰富的图表类型,包括地图图表。地图图表可以直观地展示地理信息,是数据分析中常用的一种可视化形式。本文将为你详细介绍如何使用 ECharts 绘制地图图表,并通过 30 个实用案例,让你轻松掌握地图图表的制作技巧。
1. ECharts 地图图表基础
1.1 引入 ECharts 库
首先,你需要引入 ECharts 库。可以通过 CDN 链接或下载 ECharts 的源码来实现。
<script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.3.2/echarts.min.js"></script>
1.2 准备地图数据
地图数据是绘制地图图表的基础。ECharts 支持多种地图数据格式,如 GeoJSON、GEOJSON、GeoSVG 等。
1.3 配置地图图表
使用 ECharts 的 echarts.init() 方法初始化图表实例,并传入地图数据和配置项。
var myChart = echarts.init(document.getElementById('main'));
var option = {
// 配置项
};
myChart.setOption(option);
2. 实用案例解析
2.1 世界地图
案例描述
展示全球各国的分布情况。
代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '世界地图'
},
tooltip: {
trigger: 'item'
},
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: '中国', value: 1409517397},
{name: '印度', value: 1339180127},
// ... 其他国家数据
]
}
]
};
myChart.setOption(option);
2.2 中国地图
案例描述
展示中国各省份的人口分布情况。
代码示例
var myChart = echarts.init(document.getElementById('main'));
var 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: [
{name: '北京', value: 21542718},
{name: '天津', value: 15552310},
// ... 其他省份数据
]
}
]
};
myChart.setOption(option);
2.3 省级地图
案例描述
展示某个省份的地级市人口分布情况。
代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '江苏省人口分布'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 1000,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: '江苏省人口',
type: 'map',
mapType: '江苏',
roam: true,
label: {
show: true
},
data: [
{name: '南京市', value: 8525880},
{name: '无锡市', value: 5803554},
// ... 其他地级市数据
]
}
]
};
myChart.setOption(option);
2.4 地级市地图
案例描述
展示某个地级市的人口分布情况。
代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '南京市人口分布'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 1000,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: '南京市人口',
type: 'map',
mapType: '南京',
roam: true,
label: {
show: true
},
data: [
{name: '玄武区', value: 745528},
{name: '秦淮区', value: 725427},
// ... 其他区县数据
]
}
]
};
myChart.setOption(option);
2.5 区县地图
案例描述
展示某个区县的人口分布情况。
代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '玄武区人口分布'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 1000,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: '玄武区人口',
type: 'map',
mapType: '玄武区',
roam: true,
label: {
show: true
},
data: [
{name: '新街口街道', value: 6100},
{name: '中央门街道', value: 6200},
// ... 其他街道数据
]
}
]
};
myChart.setOption(option);
2.6 3D 地图
案例描述
展示 3D 地图效果。
代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '3D 地图'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 1000,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: '3D 地图',
type: 'map3D',
mapType: '世界',
roam: true,
label: {
show: true
},
data: [
{name: '中国', value: 1409517397},
{name: '美国', value: 331002651},
// ... 其他国家数据
]
}
]
};
myChart.setOption(option);
2.7 地图热力图
案例描述
展示地图上的热力图效果。
代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图热力图'
},
tooltip: {
trigger: 'item'
},
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, 100]},
{name: '上海', value: [121.47, 31.23, 80]},
// ... 其他数据
]
}
]
};
myChart.setOption(option);
2.8 地图路径图
案例描述
展示地图上的路径图效果。
代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图路径图'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 1000,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: '地图路径图',
type: 'lines',
coordinateSystem: 'geo',
data: [
{name: '北京', coords: [[116.46, 39.92], [121.47, 31.23]]},
{name: '上海', coords: [[121.47, 31.23], [119.18, 31.32]]},
// ... 其他数据
]
}
]
};
myChart.setOption(option);
2.9 地图标签云
案例描述
展示地图上的标签云效果。
代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图标签云'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 1000,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: '地图标签云',
type: 'cloud',
coordinateSystem: 'geo',
data: [
{name: '北京', value: 100},
{name: '上海', value: 80},
// ... 其他数据
]
}
]
};
myChart.setOption(option);
2.10 地图饼图
案例描述
展示地图上的饼图效果。
代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图饼图'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 1000,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: '地图饼图',
type: 'pie',
coordinateSystem: 'geo',
data: [
{name: '北京', value: 100},
{name: '上海', value: 80},
// ... 其他数据
]
}
]
};
myChart.setOption(option);
2.11 地图柱状图
案例描述
展示地图上的柱状图效果。
代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图柱状图'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 1000,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: '地图柱状图',
type: 'bar',
coordinateSystem: 'geo',
data: [
{name: '北京', value: 100},
{name: '上海', value: 80},
// ... 其他数据
]
}
]
};
myChart.setOption(option);
2.12 地图折线图
案例描述
展示地图上的折线图效果。
代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图折线图'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 1000,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: '地图折线图',
type: 'line',
coordinateSystem: 'geo',
data: [
{name: '北京', value: [100, 110]},
{name: '上海', value: [80, 90]},
// ... 其他数据
]
}
]
};
myChart.setOption(option);
2.13 地图散点图
案例描述
展示地图上的散点图效果。
代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图散点图'
},
tooltip: {
trigger: 'item'
},
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, 100]},
{name: '上海', value: [121.47, 31.23, 80]},
// ... 其他数据
]
}
]
};
myChart.setOption(option);
2.14 地图环形图
案例描述
展示地图上的环形图效果。
代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图环形图'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 1000,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: '地图环形图',
type: 'pie',
coordinateSystem: 'geo',
radius: ['40%', '70%'],
data: [
{name: '北京', value: 100},
{name: '上海', value: 80},
// ... 其他数据
]
}
]
};
myChart.setOption(option);
2.15 地图雷达图
案例描述
展示地图上的雷达图效果。
代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图雷达图'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 1000,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: '地图雷达图',
type: 'radar',
coordinateSystem: 'geo',
data: [
{name: '北京', value: [100, 110, 120, 130, 140]},
{name: '上海', value: [80, 90, 100, 110, 120]},
// ... 其他数据
]
}
]
};
myChart.setOption(option);
2.16 地图漏斗图
案例描述
展示地图上的漏斗图效果。
代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图漏斗图'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 1000,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: '地图漏斗图',
type: 'funnel',
coordinateSystem: 'geo',
data: [
{name: '北京', value: 100},
{name: '上海', value: 80},
// ... 其他数据
]
}
]
};
myChart.setOption(option);
2.17 地图仪表盘
案例描述
展示地图上的仪表盘效果。
代码示例
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图仪表盘'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 1000,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: '地图仪表盘',
type: 'gauge',
coordinateSystem: 'geo',
data: [
{name: '北京', value: 100},
{name: '上海', value: 80},
// ... 其他数据
]
}
]
};
myChart.setOption(option);
2.18 地图地图
案例描述
展示地图上的地图效果。
代码示例
”`javascript var myChart = echarts.init(document.getElementById(‘main’));
var option = {
title: {
text: '地图地图'
},
tooltip: {
trigger: 'item'
},
visualMap: {
min: 0,
max: 1000,
left: 'left',
top: 'bottom',
text: ['高','低'],
calculable: true
},
series: [
{
name: '地图地图',
type: 'map',
coordinateSystem: 'geo',
data: [
{name: '北京', value: 100},
{name: '上海',
