轻松上手ECharts地图图表:30个实用案例教你绘制个性化中国地图

2026-10-10 0 阅读

ECharts是一个使用JavaScript实现的开源可视化库,它可以帮助用户轻松实现数据可视化。在ECharts中,地图图表是一个非常实用且受欢迎的功能,尤其是在展示地理分布数据时。本篇文章将带您通过30个实用案例,轻松上手并学会如何绘制个性化的中国地图。

案例一:基础中国地图展示

首先,我们从最基础的地图展示开始。以下是一个简单的ECharts中国地图图表的代码示例:

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

var option = {
    series: [{
        type: 'map',
        map: 'china'
    }]
};

myChart.setOption(option);

这段代码创建了一个基础的中国地图图表,其中map: 'china'指定了使用中国地图。

案例二:自定义颜色和样式

在基础地图的基础上,我们可以自定义颜色和样式来突出特定的区域或数据。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        itemStyle: {
            normal: {
                areaColor: '#323c48',
                borderColor: '#111'
            },
            emphasis: {
                areaColor: '#2a333d'
            }
        }
    }]
};

这里,我们通过itemStyle自定义了地图区域的正常和强调状态下的颜色。

案例三:添加数据标签和提示框

为了让地图图表更加实用,我们可以在地图上添加数据标签和提示框。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        label: {
            show: true,
            formatter: '{b}'
        },
        tooltip: {
            trigger: 'item',
            formatter: '{b}: {c}'
        }
    }]
};

在这段代码中,label和tooltip属性分别用于显示每个省份的名称和对应的数据。

案例四:按省份展示不同数据

我们可以根据每个省份的数据来设置不同的颜色和大小。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        data: [
            {name: '北京', value: 200},
            {name: '上海', value: 300},
            // ... 其他省份的数据
        ],
        itemStyle: {
            normal: {
                areaColor: '#323c48',
                borderColor: '#111'
            },
            emphasis: {
                areaColor: '#2a333d'
            }
        }
    }]
};

这里,data数组包含了每个省份的名称和对应的数据值。

案例五:动态更新地图数据

在实际应用中,我们可能需要动态更新地图数据。

// 假设我们有一个更新数据的方法
function updateMapData() {
    // 获取新的数据
    var newData = [
        // ... 新的数据
    ];

    // 更新series中的data
    myChart.setOption({
        series: [{
            data: newData
        }]
    });
}

// 定时更新数据
setInterval(updateMapData, 5000);

这段代码展示了如何通过一个方法来更新地图数据,并使用setInterval来实现定时更新。

案例六:添加自定义元素

有时候,我们可能需要在地图上添加一些自定义元素,比如标记特定的地点。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 其他配置
        markPoint: {
            symbol: 'pin',
            data: [
                {name: '北京天安门', value: 100, coord: [116.397428, 39.90923]},
                // ... 其他标记点
            ]
        }
    }]
};

在这里,我们使用了markPoint来添加标记点,并通过coord属性指定了标记点的坐标。

案例七:实现地图缩放和旋转

ECharts还支持地图的缩放和旋转。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 其他配置
        zoom: 1.2,
        rotation: -30
    }]
};

zoom属性用于控制地图的缩放级别,而rotation属性则用于旋转地图。

案例八:结合其他图表类型

除了地图,我们还可以将地图与其他图表类型结合使用。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
    }, {
        type: 'pie',
        center: ['50%', '60%'],
        radius: '30%',
        data: [
            // ... 饼图数据
        ]
    }]
};

这里,我们通过series数组同时添加了地图和饼图,并通过center和radius属性来调整饼图的位置和大小。

案例九:交互式地图

为了让地图更加互动,我们可以添加一些交互功能。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
        tooltip: {
            trigger: 'item',
            formatter: function (params) {
                return params.name + ': ' + params.value;
            }
        }
    }]
};

在这里,我们自定义了提示框的内容,使其在鼠标悬停时显示省份名称和对应的数据。

案例十:地图上的路径动画

ECharts支持在地图上绘制路径动画,比如展示从一个地点到另一个地点的路径。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
        animation: true,
        animationDuration: 2000,
        animationEasing: 'cubicInOut',
        data: [
            // ... 数据
        ]
    }]
};

animation属性用于开启动画效果,而animationDuration和animationEasing则用于控制动画的持续时间和缓动函数。

案例十一:使用地理坐标系

在ECharts中,我们可以使用地理坐标系来绘制地图。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        coordinateSystem: 'geo',
        // ... 地图配置
    }]
};

coordinateSystem属性设置为geo即可使用地理坐标系。

案例十二:多层级地图

ECharts支持多层级地图,可以展示不同级别的行政区域。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
        levels: [
            {
                itemStyle: {
                    areaColor: '#323c48'
                }
            },
            {
                itemStyle: {
                    areaColor: '#2a333d'
                }
            }
        ]
    }]
};

levels属性用于定义不同层级的样式。

案例十三:地图上的热力图

热力图可以用于展示地图上的温度、人口密度等信息。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
        visualMap: {
            type: 'heatmap',
            data: [
                // ... 热力图数据
            ]
        }
    }]
};

visualMap属性用于添加热力图。

案例十四:地图上的散点图

散点图可以用于展示地图上的点状数据。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
        markPoint: {
            symbolSize: 10,
            data: [
                // ... 散点图数据
            ]
        }
    }]
};

markPoint属性用于添加散点图。

案例十五:地图上的线图

线图可以用于展示地图上的路径数据。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
        markLine: {
            silent: true,
            data: [
                // ... 线图数据
            ]
        }
    }]
};

markLine属性用于添加线图。

案例十六:地图上的矩形图

矩形图可以用于展示地图上的矩形区域数据。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
        markRect: {
            silent: true,
            data: [
                // ... 矩形图数据
            ]
        }
    }]
};

markRect属性用于添加矩形图。

案例十七:地图上的面图

面图可以用于展示地图上的多边形区域数据。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
        markPolygon: {
            silent: true,
            data: [
                // ... 面图数据
            ]
        }
    }]
};

markPolygon属性用于添加面图。

案例十八:地图上的文本标注

文本标注可以用于在地图上添加文字说明。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
        markText: {
            silent: true,
            data: [
                // ... 文本标注数据
            ]
        }
    }]
};

markText属性用于添加文本标注。

案例十九:地图上的图标

图标可以用于在地图上添加图片或符号。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
        markIcon: {
            silent: true,
            data: [
                // ... 图标数据
            ]
        }
    }]
};

markIcon属性用于添加图标。

案例二十:地图上的标签云

标签云可以用于在地图上展示关键词或标签。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
        markTagCloud: {
            silent: true,
            data: [
                // ... 标签云数据
            ]
        }
    }]
};

markTagCloud属性用于添加标签云。

案例二十一:地图上的图表组合

我们可以将多种图表类型组合在一起,创建出更加丰富的地图图表。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
    }, {
        type: 'pie',
        center: ['50%', '60%'],
        radius: '30%',
        data: [
            // ... 饼图数据
        ]
    }]
};

这里,我们同时添加了地图和饼图,使得图表更加多样化。

案例二十二:地图上的动画效果

ECharts支持多种动画效果,可以让地图图表更加生动。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
        animation: true,
        animationDuration: 2000,
        animationEasing: 'cubicInOut',
        // ... 其他动画配置
    }]
};

通过设置animation属性和相关配置,我们可以实现动画效果。

案例二十三:地图上的交互效果

交互效果可以让地图图表更加用户友好。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
        tooltip: {
            trigger: 'item',
            formatter: function (params) {
                return params.name + ': ' + params.value;
            }
        }
    }]
};

通过设置tooltip属性,我们可以添加交互式的提示框。

案例二十四:地图上的自定义视觉映射

自定义视觉映射可以让地图图表更加符合数据特征。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
        visualMap: {
            type: 'continuous',
            min: 0,
            max: 100,
            text: ['高', '低'],
            calculable: true,
            // ... 其他配置
        }
    }]
};

通过设置visualMap属性,我们可以自定义视觉映射。

案例二十五:地图上的自定义样式

自定义样式可以让地图图表更加个性化。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
        itemStyle: {
            normal: {
                areaColor: '#323c48',
                borderColor: '#111'
            },
            emphasis: {
                areaColor: '#2a333d'
            }
        }
    }]
};

通过设置itemStyle属性,我们可以自定义地图的样式。

案例二十六:地图上的自定义事件

自定义事件可以让地图图表更加灵活。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
        markPoint: {
            symbol: 'pin',
            data: [
                // ... 标记点数据
            ],
            // ... 自定义事件配置
        }
    }]
};

通过设置markPoint属性,我们可以添加自定义事件。

案例二十七:地图上的自定义路径

自定义路径可以让地图图表更加具有创意。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
        markLine: {
            silent: true,
            data: [
                // ... 自定义路径数据
            ]
        }
    }]
};

通过设置markLine属性,我们可以添加自定义路径。

案例二十八:地图上的自定义文本

自定义文本可以让地图图表更加详细。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
        markText: {
            silent: true,
            data: [
                // ... 自定义文本数据
            ]
        }
    }]
};

通过设置markText属性,我们可以添加自定义文本。

案例二十九:地图上的自定义图标

自定义图标可以让地图图表更加有趣。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
        markIcon: {
            silent: true,
            data: [
                // ... 自定义图标数据
            ]
        }
    }]
};

通过设置markIcon属性,我们可以添加自定义图标。

案例三十:地图上的自定义标签云

自定义标签云可以让地图图表更加丰富。

var option = {
    series: [{
        type: 'map',
        map: 'china',
        // ... 地图配置
        markTagCloud: {
            silent: true,
            data: [
                // ... 自定义标签云数据
            ]
        }
    }]
};

通过设置markTagCloud属性,我们可以添加自定义标签云。

通过以上30个实用案例,相信您已经对ECharts地图图表有了更深入的了解。在实际应用中,您可以结合自己的需求,灵活运用这些案例,绘制出各种个性化的中国地图图表。

分享到: