ECharts 是一个使用 JavaScript 实现的开源可视化库,它提供了丰富的图表类型,包括地图图表。地图图表可以直观地展示地理位置数据,非常适合于地理信息系统、市场分析等领域。本文将为你详细介绍如何使用 ECharts 制作地图图表,并提供 50 个实用案例解析,帮助你快速掌握地图图表的制作技巧。
1. ECharts 地图图表简介
ECharts 地图图表是基于 SVG 渲染的,可以展示各种地理信息数据。它支持多种地图类型,如中国地图、世界地图、行政区划地图等。此外,ECharts 地图图表还支持多种交互效果,如点击、缩放、拖拽等。
2. 制作地图图表的基本步骤
- 引入 ECharts 库:在 HTML 文件中引入 ECharts 库。
- 设置地图数据:定义地图数据,包括地图类型、坐标系统、地理坐标等。
- 配置图表选项:设置图表的标题、图例、系列等选项。
- 初始化图表:使用
echarts.init()方法初始化图表。
3. 50个实用案例解析
案例一:中国地图
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '中国地图'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '中国地图',
type: 'map',
mapType: 'china',
label: {
show: true
},
data: [
{name: '北京', value: Math.round(Math.random() * 1000)},
{name: '上海', value: Math.round(Math.random() * 1000)},
// ... 其他城市数据
]
}
]
};
myChart.setOption(option);
案例二:世界地图
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '世界地图'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '世界地图',
type: 'map',
mapType: 'world',
label: {
show: true
},
data: [
{name: '美国', value: Math.round(Math.random() * 1000)},
{name: '英国', value: Math.round(Math.random() * 1000)},
// ... 其他国家数据
]
}
]
};
myChart.setOption(option);
案例三:行政区划地图
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '行政区划地图'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '行政区划地图',
type: 'map',
mapType: 'province',
label: {
show: true
},
data: [
{name: '北京市', value: Math.round(Math.random() * 1000)},
{name: '上海市', value: Math.round(Math.random() * 1000)},
// ... 其他省市区数据
]
}
]
};
myChart.setOption(option);
案例四:点击事件
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '点击事件'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '点击事件',
type: 'map',
mapType: 'china',
label: {
show: true
},
data: [
{name: '北京', value: Math.round(Math.random() * 1000)},
{name: '上海', value: Math.round(Math.random() * 1000)},
// ... 其他城市数据
],
itemStyle: {
emphasis: {
label: {
show: true
}
}
}
}
]
};
myChart.on('click', function (params) {
console.log(params.name);
});
myChart.setOption(option);
案例五:缩放效果
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '缩放效果'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '缩放效果',
type: 'map',
mapType: 'china',
label: {
show: true
},
data: [
{name: '北京', value: Math.round(Math.random() * 1000)},
{name: '上海', value: Math.round(Math.random() * 1000)},
// ... 其他城市数据
],
zoom: 1.2
}
]
};
myChart.setOption(option);
案例六:拖拽效果
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '拖拽效果'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '拖拽效果',
type: 'map',
mapType: 'china',
label: {
show: true
},
data: [
{name: '北京', value: Math.round(Math.random() * 1000)},
{name: '上海', value: Math.round(Math.random() * 1000)},
// ... 其他城市数据
],
roam: true
}
]
};
myChart.setOption(option);
案例七:自定义地图
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '自定义地图'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '自定义地图',
type: 'map',
mapType: 'custom',
label: {
show: true
},
data: [
{name: '北京市', value: Math.round(Math.random() * 1000)},
{name: '上海市', value: Math.round(Math.random() * 1000)},
// ... 其他城市数据
],
// 自定义地图数据
geoCoordMap: {
'北京市': [116.46, 39.92],
'上海市': [121.47, 31.23],
// ... 其他城市坐标
}
}
]
};
myChart.setOption(option);
案例八:地图热力图
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图热力图'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '地图热力图',
type: 'heatmap',
coordinateSystem: 'geo',
data: [
{name: '北京市', value: [116.46, 39.92, Math.round(Math.random() * 1000)]},
{name: '上海市', value: [121.47, 31.23, Math.round(Math.random() * 1000)]},
// ... 其他城市数据
]
}
]
};
myChart.setOption(option);
案例九:地图气泡图
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图气泡图'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '地图气泡图',
type: 'scatter',
coordinateSystem: 'geo',
data: [
{name: '北京市', value: [116.46, 39.92, Math.round(Math.random() * 1000)]},
{name: '上海市', value: [121.47, 31.23, Math.round(Math.random() * 1000)]},
// ... 其他城市数据
],
symbolSize: function (val) {
return val[2] / 10;
}
}
]
};
myChart.setOption(option);
案例十:地图折线图
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图折线图'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '地图折线图',
type: 'line',
coordinateSystem: 'geo',
data: [
{name: '北京市', value: [116.46, 39.92, Math.round(Math.random() * 1000)]},
{name: '上海市', value: [121.47, 31.23, Math.round(Math.random() * 1000)]},
// ... 其他城市数据
],
markLine: {
silent: false,
data: [
{name: '连接线', xAxis: 116.46, yAxis: 39.92},
{name: '连接线', xAxis: 121.47, yAxis: 31.23},
// ... 其他城市连接线
]
}
}
]
};
myChart.setOption(option);
案例十一:地图柱状图
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图柱状图'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '地图柱状图',
type: 'bar',
coordinateSystem: 'geo',
data: [
{name: '北京市', value: Math.round(Math.random() * 1000)},
{name: '上海市', value: Math.round(Math.random() * 1000)},
// ... 其他城市数据
],
markLine: {
silent: false,
data: [
{name: '连接线', xAxis: 116.46, yAxis: 39.92},
{name: '连接线', xAxis: 121.47, yAxis: 31.23},
// ... 其他城市连接线
]
}
}
]
};
myChart.setOption(option);
案例十二:地图散点图
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图散点图'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '地图散点图',
type: 'scatter',
coordinateSystem: 'geo',
data: [
{name: '北京市', value: [116.46, 39.92, Math.round(Math.random() * 1000)]},
{name: '上海市', value: [121.47, 31.23, Math.round(Math.random() * 1000)]},
// ... 其他城市数据
]
}
]
};
myChart.setOption(option);
案例十三:地图雷达图
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图雷达图'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '地图雷达图',
type: 'radar',
coordinateSystem: 'geo',
data: [
{name: '北京市', value: [116.46, 39.92, Math.round(Math.random() * 1000)]},
{name: '上海市', value: [121.47, 31.23, Math.round(Math.random() * 1000)]},
// ... 其他城市数据
]
}
]
};
myChart.setOption(option);
案例十四:地图饼图
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图饼图'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '地图饼图',
type: 'pie',
coordinateSystem: 'geo',
data: [
{name: '北京市', value: Math.round(Math.random() * 1000)},
{name: '上海市', value: Math.round(Math.random() * 1000)},
// ... 其他城市数据
]
}
]
};
myChart.setOption(option);
案例十五:地图漏斗图
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图漏斗图'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '地图漏斗图',
type: 'funnel',
coordinateSystem: 'geo',
data: [
{name: '北京市', value: Math.round(Math.random() * 1000)},
{name: '上海市', value: Math.round(Math.random() * 1000)},
// ... 其他城市数据
]
}
]
};
myChart.setOption(option);
案例十六:地图力导向图
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图力导向图'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '地图力导向图',
type: 'force',
coordinateSystem: 'geo',
data: [
{name: '北京市', value: Math.round(Math.random() * 1000)},
{name: '上海市', value: Math.round(Math.random() * 1000)},
// ... 其他城市数据
]
}
]
};
myChart.setOption(option);
案例十七:地图桑基图
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图桑基图'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '地图桑基图',
type: 'sankey',
coordinateSystem: 'geo',
data: [
{name: '北京市', value: Math.round(Math.random() * 1000)},
{name: '上海市', value: Math.round(Math.random() * 1000)},
// ... 其他城市数据
]
}
]
};
myChart.setOption(option);
案例十八:地图树状图
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图树状图'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '地图树状图',
type: 'tree',
coordinateSystem: 'geo',
data: [
{name: '北京市', value: Math.round(Math.random() * 1000)},
{name: '上海市', value: Math.round(Math.random() * 1000)},
// ... 其他城市数据
]
}
]
};
myChart.setOption(option);
案例十九:地图水波纹图
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图水波纹图'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '地图水波纹图',
type: 'wave',
coordinateSystem: 'geo',
data: [
{name: '北京市', value: Math.round(Math.random() * 1000)},
{name: '上海市', value: Math.round(Math.random() * 1000)},
// ... 其他城市数据
]
}
]
};
myChart.setOption(option);
案例二十:地图水球图
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图水球图'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '地图水球图',
type: 'gauge',
coordinateSystem: 'geo',
data: [
{name: '北京市', value: Math.round(Math.random() * 1000)},
{name: '上海市', value: Math.round(Math.random() * 1000)},
// ... 其他城市数据
]
}
]
};
myChart.setOption(option);
案例二十一:地图水滴图
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图水滴图'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '地图水滴图',
type: 'drop',
coordinateSystem: 'geo',
data: [
{name: '北京市', value: Math.round(Math.random() * 1000)},
{name: '上海市', value: Math.round(Math.random() * 1000)},
// ... 其他城市数据
]
}
]
};
myChart.setOption(option);
案例二十二:地图水滴球图
var myChart = echarts.init(document.getElementById('main'));
var option = {
title: {
text: '地图水滴球图'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '地图水滴球图',
type: 'gauge',
coordinateSystem: 'geo',
data: [
{name: '北京市', value: Math.round(Math.random() * 1000)},
{name: '上海市', value: Math.round(Math.random() * 1000)},
// ... 其他城市数据
]
}
]
};
myChart.setOption(option);
案例二十三:地图水滴环图
”`javascript var myChart = echarts.init(document.getElementById(‘main’));
var option = {
title: {
text: '地图水滴环图'
},
tooltip: {
trigger: 'item'
},
series: [
{
name: '地图水滴环图',
type: 'ring',
coordinateSystem: 'geo',
data: [
{name: '北京市', value: Math.round(Math.random() * 1000
