ECharts 是一个使用 JavaScript 实现的开源可视化库,它提供了丰富的图表类型,包括地图图表。地图图表在展示地理分布数据时非常有效,可以帮助用户直观地理解数据的空间分布情况。本文将详细介绍如何使用 ECharts 绘制地图图表,并通过 30 个实用案例来展示其应用。
基础知识
在开始之前,我们需要了解一些基础知识:
- ECharts 地图数据格式:ECharts 地图数据通常使用 JSON 格式,包括地理坐标、名称、值等信息。
- 地图类型:ECharts 支持多种地图类型,如中国地图、世界地图、行政区划地图等。
- 数据可视化:通过 ECharts 的配置项,我们可以设置地图的颜色、标签、图例等,以实现数据可视化。
案例一:中国地图基础示例
以下是一个简单的中国地图绘制示例:
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: 'United States', value: Math.round(Math.random() * 1000)},
{name: 'Canada', 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);
案例四:自定义地图示例
ECharts 支持自定义地图,以下是一个使用自定义地图的示例:
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: '区域1', value: Math.round(Math.random() * 1000)},
{name: '区域2', 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
},
itemStyle: {
areaColor: '#f4e925',
color: '#f4e925'
},
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,
formatter: '{b}: {c}'
},
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'
},
legend: {
orient: 'vertical',
left: 'left',
data: ['北京', '上海', '广州', '深圳']
},
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: 'china',
label: {
show: true
},
animation: 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)},
// ... 其他城市数据
]
}
]
};
myChart.on('click', function (params) {
console.log(params.name + ': ' + params.value);
});
myChart.setOption(option);
案例十:地图联动示例
以下是一个展示地图联动的示例:
var myChart1 = echarts.init(document.getElementById('main1'));
var myChart2 = echarts.init(document.getElementById('main2'));
var option1 = {
title: {
text: '地图联动示例 - 图1'
},
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)},
// ... 其他城市数据
]
}
]
};
var option2 = {
title: {
text: '地图联动示例 - 图2'
},
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)},
// ... 其他城市数据
]
}
]
};
myChart1.setOption(option1);
myChart2.setOption(option2);
myChart1.on('click', function (params) {
myChart2.setOption({
series: [{
data: [{
name: params.name,
value: params.value
}]
}]
});
});
案例十一:地图热力图示例
以下是一个展示地图热力图的示例:
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.48, 31.22, 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.48, 31.22, 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: 'effectScatter',
coordinateSystem: 'geo',
data: [
{name: '北京', value: [116.46, 39.92, Math.round(Math.random() * 1000)]},
{name: '上海', value: [121.48, 31.22, 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: 'bar',
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: 'line',
coordinateSystem: 'geo',
data: [
{name: '北京', value: [116.46, 39.92, Math.round(Math.random() * 1000)]},
{name: '上海', value: [121.48, 31.22, 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.48, 31.22, 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: 'ring',
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: '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: 'scatter',
coordinateSystem: 'geo',
data: [
{name: '北京', value: [116.46, 39.92, Math.round(Math.random() * 1000)]},
{name: '上海', value: [121.48, 31.22, Math.round(Math.random() * 1000)]},
// ... 其他城市数据
]
},
{
name: '地图混合图表',
type: 'line',
coordinateSystem: 'geo',
data: [
{name: '北京', value: [116.46, 39.92