从新手到高手:30个实用echarts地图图表案例分析,轻松入门!

2026-10-31 0 阅读

在数据可视化领域,ECharts地图图表以其丰富的功能和灵活性,成为了数据展示的利器。对于新手来说,掌握ECharts地图图表的制作技巧可能有些挑战,但不用担心,本文将为你带来30个实用案例分析,帮助你轻松入门,一步步成为地图图表制作的高手。

1. 地图基础配置

首先,我们需要了解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)},
                // ... 其他省份数据
            ]
        }
    ]
};

myChart.setOption(option);

在这个例子中,我们创建了一个名为“中国”的地图系列,并设置了地图类型为“china”,同时添加了省份数据和标签显示。

2. 地图交互效果

为了让地图更加生动,我们可以添加一些交互效果,例如点击省份查看详细信息。以下是一个添加点击交互的示例:

var myChart = echarts.init(document.getElementById('main'));

var option = {
    // ... 省略其他配置
    series: [
        {
            // ... 省略其他配置
            data: [
                {name: '北京', value: Math.round(Math.random() * 1000)},
                // ... 其他省份数据
            ],
            itemStyle: {
                emphasis: {
                    label: {
                        show: true
                    }
                }
            },
            label: {
                show: true,
                formatter: function (params) {
                    return params.name + ':' + params.value;
                }
            },
            animation: true
        }
    ]
};

myChart.setOption(option);

myChart.on('click', function (params) {
    if (params.componentType === 'series') {
        console.log(params.name + ':' + params.value);
    }
});

在这个例子中,我们为每个省份添加了点击事件,并在控制台输出省份名称和值。

3. 地图数据可视化

除了基本的地图展示,我们还可以通过ECharts地图图表进行数据可视化。以下是一个展示不同省份人口数量的示例:

var myChart = echarts.init(document.getElementById('main'));

var option = {
    // ... 省略其他配置
    series: [
        {
            // ... 省略其他配置
            data: [
                {name: '北京', value: 2154},
                {name: '上海', value: 2425},
                // ... 其他省份数据
            ],
            label: {
                show: true,
                formatter: '{b}: {c}'
            },
            itemStyle: {
                emphasis: {
                    label: {
                        show: true
                    }
                }
            }
        }
    ]
};

myChart.setOption(option);

在这个例子中,我们使用value属性来表示省份的人口数量,并通过标签显示每个省份的人口数量。

4. 地图动画效果

为了让地图更加生动,我们可以添加一些动画效果。以下是一个展示省份人口数量动画的示例:

var myChart = echarts.init(document.getElementById('main'));

var option = {
    // ... 省略其他配置
    series: [
        {
            // ... 省略其他配置
            data: [
                {name: '北京', value: 2154},
                {name: '上海', value: 2425},
                // ... 其他省份数据
            ],
            label: {
                show: true,
                formatter: '{b}: {c}'
            },
            itemStyle: {
                emphasis: {
                    label: {
                        show: true
                    }
                }
            },
            animation: true
        }
    ]
};

myChart.setOption(option);

在这个例子中,我们通过设置animation属性为true,为地图添加了动画效果。

5. 地图自定义样式

ECharts地图图表支持自定义样式,例如颜色、边框等。以下是一个自定义地图样式的示例:

var myChart = echarts.init(document.getElementById('main'));

var option = {
    // ... 省略其他配置
    series: [
        {
            // ... 省略其他配置
            data: [
                {name: '北京', value: 2154},
                {name: '上海', value: 2425},
                // ... 其他省份数据
            ],
            itemStyle: {
                normal: {
                    areaColor: '#f1f1f1',
                    borderColor: '#ccc'
                },
                emphasis: {
                    areaColor: '#fff',
                    borderColor: '#000'
                }
            }
        }
    ]
};

myChart.setOption(option);

在这个例子中,我们通过设置areaColor和borderColor属性来自定义地图颜色和边框样式。

6. 地图数据聚合

当数据量较大时,我们可以使用ECharts地图图表的数据聚合功能来展示数据。以下是一个展示省份人口数量聚合的示例:

var myChart = echarts.init(document.getElementById('main'));

var option = {
    // ... 省略其他配置
    series: [
        {
            // ... 省略其他配置
            data: [
                {name: '北京', value: 2154},
                {name: '上海', value: 2425},
                // ... 其他省份数据
            ],
            label: {
                show: true,
                formatter: '{b}: {c}'
            },
            itemStyle: {
                normal: {
                    areaColor: '#f1f1f1',
                    borderColor: '#ccc'
                },
                emphasis: {
                    areaColor: '#fff',
                    borderColor: '#000'
                }
            },
            // ... 省略其他配置
            markPoint: {
                symbol: 'pin',
                symbolSize: 50,
                data: [
                    {name: '北京', value: 2154},
                    {name: '上海', value: 2425},
                    // ... 其他省份数据
                ]
            }
        }
    ]
};

myChart.setOption(option);

在这个例子中,我们通过设置markPoint属性来展示数据聚合效果。

7. 地图热力图

ECharts地图图表支持热力图展示,以下是一个展示省份人口密度热力图的示例:

var myChart = echarts.init(document.getElementById('main'));

var option = {
    // ... 省略其他配置
    series: [
        {
            // ... 省略其他配置
            data: [
                {name: '北京', value: 2154},
                {name: '上海', value: 2425},
                // ... 其他省份数据
            ],
            label: {
                show: true,
                formatter: '{b}: {c}'
            },
            itemStyle: {
                normal: {
                    areaColor: '#f1f1f1',
                    borderColor: '#ccc'
                },
                emphasis: {
                    areaColor: '#fff',
                    borderColor: '#000'
                }
            },
            // ... 省略其他配置
            visualMap: {
                min: 0,
                max: 5000,
                left: 'left',
                top: 'bottom',
                text: ['高','低'],           // 文本,默认为数值文本
                calculable: true
            }
        }
    ]
};

myChart.setOption(option);

在这个例子中,我们通过设置visualMap属性来展示热力图效果。

8. 地图多级联动

ECharts地图图表支持多级联动,以下是一个展示省份、城市、区县三级联动的示例:

var myChart = echarts.init(document.getElementById('main'));

var option = {
    // ... 省略其他配置
    series: [
        {
            // ... 省略其他配置
            data: [
                {name: '北京', value: 2154},
                {name: '上海', value: 2425},
                // ... 其他省份数据
            ],
            label: {
                show: true,
                formatter: '{b}: {c}'
            },
            itemStyle: {
                normal: {
                    areaColor: '#f1f1f1',
                    borderColor: '#ccc'
                },
                emphasis: {
                    areaColor: '#fff',
                    borderColor: '#000'
                }
            },
            // ... 省略其他配置
            levels: [
                {
                    // ... 省略其他配置
                },
                {
                    // ... 省略其他配置
                },
                {
                    // ... 省略其他配置
                }
            ]
        }
    ]
};

myChart.setOption(option);

在这个例子中,我们通过设置levels属性来实现多级联动效果。

9. 地图自定义标注

ECharts地图图表支持自定义标注,以下是一个展示省份、城市、区县标注的示例:

var myChart = echarts.init(document.getElementById('main'));

var option = {
    // ... 省略其他配置
    series: [
        {
            // ... 省略其他配置
            data: [
                {name: '北京', value: 2154},
                {name: '上海', value: 2425},
                // ... 其他省份数据
            ],
            label: {
                show: true,
                formatter: '{b}: {c}'
            },
            itemStyle: {
                normal: {
                    areaColor: '#f1f1f1',
                    borderColor: '#ccc'
                },
                emphasis: {
                    areaColor: '#fff',
                    borderColor: '#000'
                }
            },
            // ... 省略其他配置
            markPoint: {
                symbol: 'pin',
                symbolSize: 50,
                data: [
                    {name: '北京', value: 2154},
                    {name: '上海', value: 2425},
                    // ... 其他省份数据
                ]
            }
        }
    ]
};

myChart.setOption(option);

在这个例子中,我们通过设置markPoint属性来实现自定义标注效果。

10. 地图数据筛选

ECharts地图图表支持数据筛选功能,以下是一个展示省份、城市、区县数据筛选的示例:

var myChart = echarts.init(document.getElementById('main'));

var option = {
    // ... 省略其他配置
    series: [
        {
            // ... 省略其他配置
            data: [
                {name: '北京', value: 2154},
                {name: '上海', value: 2425},
                // ... 其他省份数据
            ],
            label: {
                show: true,
                formatter: '{b}: {c}'
            },
            itemStyle: {
                normal: {
                    areaColor: '#f1f1f1',
                    borderColor: '#ccc'
                },
                emphasis: {
                    areaColor: '#fff',
                    borderColor: '#000'
                }
            },
            // ... 省略其他配置
            markPoint: {
                symbol: 'pin',
                symbolSize: 50,
                data: [
                    {name: '北京', value: 2154},
                    {name: '上海', value: 2425},
                    // ... 其他省份数据
                ]
            }
        }
    ]
};

myChart.setOption(option);

// 筛选数据
function filterData(name) {
    var series = myChart.getOption().series;
    for (var i = 0; i < series.length; i++) {
        var data = series[i].data;
        for (var j = 0; j < data.length; j++) {
            if (data[j].name === name) {
                data[j].value = 0;
            }
        }
    }
    myChart.setOption({
        series: series
    });
}

// 调用筛选函数
filterData('北京');

在这个例子中,我们通过设置markPoint属性来实现数据筛选效果。

11. 地图数据导出

ECharts地图图表支持数据导出功能,以下是一个展示省份、城市、区县数据导出的示例:

var myChart = echarts.init(document.getElementById('main'));

var option = {
    // ... 省略其他配置
    series: [
        {
            // ... 省略其他配置
            data: [
                {name: '北京', value: 2154},
                {name: '上海', value: 2425},
                // ... 其他省份数据
            ],
            label: {
                show: true,
                formatter: '{b}: {c}'
            },
            itemStyle: {
                normal: {
                    areaColor: '#f1f1f1',
                    borderColor: '#ccc'
                },
                emphasis: {
                    areaColor: '#fff',
                    borderColor: '#000'
                }
            },
            // ... 省略其他配置
            markPoint: {
                symbol: 'pin',
                symbolSize: 50,
                data: [
                    {name: '北京', value: 2154},
                    {name: '上海', value: 2425},
                    // ... 其他省份数据
                ]
            }
        }
    ]
};

myChart.setOption(option);

// 导出数据
function exportData() {
    var series = myChart.getOption().series;
    var data = [];
    for (var i = 0; i < series.length; i++) {
        var item = series[i];
        for (var j = 0; j < item.data.length; j++) {
            var itemData = item.data[j];
            data.push({
                name: itemData.name,
                value: itemData.value
            });
        }
    }
    // ... 省略导出数据代码
}

// 调用导出函数
exportData();

在这个例子中,我们通过设置markPoint属性来实现数据导出效果。

12. 地图数据更新

ECharts地图图表支持数据更新功能,以下是一个展示省份、城市、区县数据更新的示例:

var myChart = echarts.init(document.getElementById('main'));

var option = {
    // ... 省略其他配置
    series: [
        {
            // ... 省略其他配置
            data: [
                {name: '北京', value: 2154},
                {name: '上海', value: 2425},
                // ... 其他省份数据
            ],
            label: {
                show: true,
                formatter: '{b}: {c}'
            },
            itemStyle: {
                normal: {
                    areaColor: '#f1f1f1',
                    borderColor: '#ccc'
                },
                emphasis: {
                    areaColor: '#fff',
                    borderColor: '#000'
                }
            },
            // ... 省略其他配置
            markPoint: {
                symbol: 'pin',
                symbolSize: 50,
                data: [
                    {name: '北京', value: 2154},
                    {name: '上海', value: 2425},
                    // ... 其他省份数据
                ]
            }
        }
    ]
};

myChart.setOption(option);

// 更新数据
function updateData() {
    var series = myChart.getOption().series;
    for (var i = 0; i < series.length; i++) {
        var item = series[i];
        for (var j = 0; j < item.data.length; j++) {
            var itemData = item.data[j];
            itemData.value = Math.round(Math.random() * 1000);
        }
    }
    myChart.setOption({
        series: series
    });
}

// 调用更新函数
updateData();

在这个例子中,我们通过设置markPoint属性来实现数据更新效果。

13. 地图数据对比

ECharts地图图表支持数据对比功能,以下是一个展示省份、城市、区县数据对比的示例:

var myChart = echarts.init(document.getElementById('main'));

var option = {
    // ... 省略其他配置
    series: [
        {
            // ... 省略其他配置
            data: [
                {name: '北京', value: 2154},
                {name: '上海', value: 2425},
                // ... 其他省份数据
            ],
            label: {
                show: true,
                formatter: '{b}: {c}'
            },
            itemStyle: {
                normal: {
                    areaColor: '#f1f1f1',
                    borderColor: '#ccc'
                },
                emphasis: {
                    areaColor: '#fff',
                    borderColor: '#000'
                }
            },
            // ... 省略其他配置
            markPoint: {
                symbol: 'pin',
                symbolSize: 50,
                data: [
                    {name: '北京', value: 2154},
                    {name: '上海', value: 2425},
                    // ... 其他省份数据
                ]
            }
        }
    ]
};

myChart.setOption(option);

// 对比数据
function compareData() {
    var series = myChart.getOption().series;
    for (var i = 0; i < series.length; i++) {
        var item = series[i];
        for (var j = 0; j < item.data.length; j++) {
            var itemData = item.data[j];
            itemData.value = Math.round(Math.random() * 1000);
        }
    }
    myChart.setOption({
        series: series
    });
}

// 调用对比函数
compareData();

在这个例子中,我们通过设置markPoint属性来实现数据对比效果。

14. 地图数据钻取

ECharts地图图表支持数据钻取功能,以下是一个展示省份、城市、区县数据钻取的示例:

”`javascript var myChart = echarts.init(document.getElementById(‘main’));

var option = {

// ... 省略其他配置
series: [
    {
        // ... 省略其他配置
        data: [
            {name: '北京', value: 2154},
            {name: '上海', value: 2425},
            // ... 其他省份数据
        ],
        label: {
            show: true,
            formatter: '{b}: {c}'
        },
        itemStyle: {
            normal: {
                areaColor: '#f1f1f1',
                borderColor: '#ccc'
            },
            emphasis: {
                areaColor: '#fff',
                borderColor: '#000'
            }
        },
        // ... 省略其他配置
        markPoint: {
            symbol: 'pin',
            symbolSize
分享到: