用Pyecharts绘制交互式中国地图:从数据到可视化全流程解析

简介: Pyecharts是基于ECharts的Python地图可视化利器:支持零代码交互(悬停、缩放)、多级行政区划(省/市/县)、高度定制化(20+样式参数)。本文详解安装配置、数据规范、三步绘图、分段配色、悬停高亮及3D扩展,助你快速生成专业级热力地图。(239字)

​免费编程软件「python+pycharm」
链接:https://pan.quark.cn/s/48a86be2fdc0

一、为什么选择Pyecharts绘制地图?
当需要展示各省份经济指标、人口分布或疫情数据时,表格和柱状图往往难以直观呈现地理空间关系。Pyecharts作为基于ECharts的Python可视化库,提供三大核心优势:
代理IP在实时交通数据采集的作用 (5).png

零代码交互:生成的HTML地图支持鼠标悬停查看数值、缩放平移等操作
多级地图支持:从全国到县级行政区划均可渲染
高度定制化:颜色渐变、边界样式、标签显示等20+项参数可调
以2025年某电商平台销售数据为例,通过热力地图可快速发现:广东省销售额占比达28%,而西北五省总和不足10%。这种空间分布特征在传统图表中难以直观呈现。

二、环境准备:安装与配置
2.1 基础安装
pip install pyecharts
2.2 地图数据包安装(关键步骤)
Pyecharts采用模块化地图设计,需单独安装对应数据包:

中国省级地图(必须安装)

pip install echarts-china-provinces-pypkg

可选扩展包

pip install echarts-china-cities-pypkg # 市级地图
pip install echarts-china-counties-pypkg # 县级地图

三、数据准备:从原始数据到可视化格式
3.1 数据结构要求
Pyecharts地图需要特定格式的二维列表:

[("北京", 100), ("上海", 200), ("广东", 300), ...]

3.2 实际案例处理
假设有如下CSV数据(部分展示):

省份,销售额(亿元)
北京,125
上海,210
广东,380
江苏,295
...

转换代码:

import pandas as pd

读取CSV文件

df = pd.read_csv('sales_data.csv')

转换为元组列表

data = list(zip(df['省份'], df['销售额(亿元)']))

3.3 数据验证技巧

检查省份名称是否规范(避免"广东"与"广东省"混用)

valid_provinces = {"北京", "上海", "广东", "江苏", ...} # 完整列表见附录
for item in data:
if item[0] not in valid_provinces:
print(f"发现无效省份名: {item[0]}")

四、基础地图绘制:三步完成可视化
4.1 最小可行代码
from pyecharts.charts import Map
from pyecharts import options as opts

示例数据

data = [("北京", 100), ("上海", 200), ("广东", 300)]

创建地图

map_chart = (
Map()
.add("销售额", data, "china")
.set_global_opts(
title_opts=opts.TitleOpts(title="2025年各省份销售额"),
visualmapopts=opts.VisualMapOpts(max=300)
)
)

生成HTML文件

map_chart.render("china_map.html")

4.2 代码解析
Map():创建地图对象
.add():添加数据系列
参数1:系列名称(图例显示)
参数2:数据列表
参数3:地图类型("china"表示中国地图)
.set_global_opts():全局配置
标题、视觉映射等设置
.render():输出HTML文件
4.3 效果增强技巧
调整地图中心点与缩放
.add(..., center=[105, 36], zoom=1.2) # 中心点设为地理中心,适当放大

优化标签显示
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=True, # 显示标签
color="#333", # 标签颜色
font_size=10 # 字体大小
)
)

五、进阶美化:打造专业级地图
5.1 分段颜色映射
.set_global_opts(
visualmap_opts=opts.VisualMapOpts(
is_piecewise=True, # 启用分段
pieces=[
{"min": 0, "max": 100, "label": "0-100亿", "color": "#FFE4E1"},
{"min": 101, "max": 200, "label": "101-200亿", "color": "#FF7F50"},
{"min": 201, "max": 300, "label": "201-300亿", "color": "#FF4500"},
{"min": 301, "label": "300亿以上", "color": "#8B0000"}
]
)
)

5.2 自定义地图样式
.set_series_opts(
itemstyle_opts=opts.ItemStyleOpts(
area_color="#142957", # 省份底色
border_color="#00f2fe", # 边界颜色
border_width=0.5 # 边界宽度
)
)

5.3 添加悬停高亮效果
.set_series_opts(
emphasis_opts=opts.ItemStyleOpts(
area_color="#00f2fe", # 悬停时颜色
border_color="#ffffff", # 悬停时边界
border_width=2 # 悬停时边界加粗
)
)

六、完整案例:2025年各省份GDP热力图
6.1 数据准备
gdp_data = [
("广东", 124369.67), ("江苏", 116364.2),
("山东", 83095.90), ("浙江", 73516.3),
("河南", 58887.41), ("四川", 53850.79),
("湖北", 50012.94), ("福建", 48829.61),
("湖南", 46027.47), ("上海", 43214.85)
]

6.2 完整代码
from pyecharts.charts import Map
from pyecharts import options as opts

创建地图

map_chart = (
Map()
.add(
series_name="GDP(亿元)",
data_pair=gdp_data,
maptype="china",
center=[105, 36],
zoom=1.2
)
.set_global_opts(
title_opts=opts.TitleOpts(
title="2025年中国各省份GDP分布",
subtitle="数据来源:国家统计局",
pos_left="center"
),
visualmap_opts=opts.VisualMapOpts(
ispiecewise=True,
max
=125000,
pieces=[
{"min": 0, "max": 50000, "label": "<5万亿", "color": "#FFE4E1"}, {"min": 50001, "max": 80000, "label": "5-8万亿", "color": "#FFDAB9"}, {"min": 80001, "max": 100000, "label": "8-10万亿", "color": "#FFA07A"}, {"min": 100001, "label": ">10万亿", "color": "#FF6347"}
],
pos_left="10%",
pos_top="20%"
),
tooltip_opts=opts.TooltipOpts(
trigger="item",
formatter="{b}
{c}亿元"
)
)
.set_series_opts(
label_opts=opts.LabelOpts(
is_show=True,
color="#333",
font_size=10
),
itemstyle_opts=opts.ItemStyleOpts(
area_color="#E6E6FA",
border_color="#4682B4"
),
emphasis_opts=opts.ItemStyleOpts(
area_color="#9370DB",
border_color="#FFFFFF",
border_width=1.5
)
)
)

生成HTML

map_chart.render("2025_china_gdp_map.html")

6.3 效果说明
分段显示:GDP分为4个区间,不同颜色对应不同量级
交互功能:
鼠标悬停显示省份名称和具体数值
地图可缩放平移
视觉优化:
标题居中显示
图例位于左侧
默认缩放至合适比例
七、常见问题解决方案
7.1 地图显示空白
原因:未安装对应地图数据包
解决:根据报错提示安装缺失的包,如:

pip install echarts-china-provinces-pypkg

7.2 省份名称不匹配
表现:部分省份显示为灰色(无数据)
检查:

确认省份名称规范(如"内蒙古"而非"内蒙古自治区")
使用完整省份列表核对:
valid_provinces = {
"北京", "天津", "河北", "山西", "内蒙古", "辽宁",
"吉林", "黑龙江", "上海", "江苏", "浙江", "安徽",
"福建", "江西", "山东", "河南", "湖北", "湖南",
"广东", "广西", "海南", "重庆", "四川", "贵州",
"云南", "西藏", "陕西", "甘肃", "青海", "宁夏",
"新疆"
}

7.3 数值范围显示异常
现象:颜色映射不准确
解决:在VisualMapOpts中明确设置max_值:

.set_global_opts(
visualmapopts=opts.VisualMapOpts(
max
=50000, # 手动设置最大值
is_piecewise=True
)
)

八、扩展应用场景
8.1 结合Flask/Django嵌入网页

Flask示例

from flask import Flask, render_template

app = Flask(name)

@app.route('/')
def show_map():

# 生成地图(实际项目中可缓存结果)
map_chart.render("templates/map.html")
return render_template("map.html")

if name == 'main':
app.run()

8.2 动态数据更新
通过JavaScript定时刷新数据(需配合ECharts的setOption方法):

// 伪代码示例
setInterval(function() {
fetch('/api/get_new_data')
.then(res => res.json())
.then(data => {
myChart.setOption({
series: [{
data: data
}]
});
});
}, 5000);

8.3 3D地图效果
需安装额外扩展包:

pip install pyecharts-gallery

3D地图示例:

from pyecharts.charts import Map3D
from pyecharts import options as opts

map3d = (
Map3D()
.add_schema(
maptype="china",
itemstyle_opts=opts.ItemStyleOpts(
color="#1E90FF",
opacity=1,
border_width=0.8
)
)
.add(
series_name="",
datapair=data,
type
="bar3D",
shading="lambert",
label_opts=opts.LabelOpts(
is_show=False
)
)
.set_global_opts(
visualmapopts=opts.VisualMapOpts(max=300)
)
)
map3d.render("3d_map.html")

九、总结与建议
快速上手:从基础代码开始,逐步添加配置项
数据验证:确保省份名称规范,数值范围合理
交互设计:合理设置缩放、标签显示等交互参数
性能优化:大数据量时考虑使用is_map_symbol_show=False隐藏标记点
持续学习:关注Pyecharts官方文档更新,掌握新特性
通过本文介绍的流程,即使没有前端开发经验,也能快速创建出专业级的交互式地图。实际项目中可根据需求组合使用基础地图、分段颜色、3D效果等特性,打造更具说服力的数据可视化作品。

目录
相关文章
|
存储 SQL 缓存
Hadoop入门(一篇就够了)
Hadoop入门(一篇就够了)
42131 6
Hadoop入门(一篇就够了)
|
7月前
|
SQL 存储 数据库
Python实现员工管理系统:从基础功能到完整应用开发指南
本文介绍如何用Python从零开发员工管理系统:基于SQLite实现员工信息、薪资计算、考勤记录等核心功能,支持命令行与Flask Web双界面,兼顾易用性与可扩展性,适合中小团队快速落地。(239字)
567 1
|
8月前
|
数据采集 数据可视化 数据挖掘
从CSV到交互式地图:用Plotly Express可视化地理数据
交互式地图让数据“活”起来:通过悬停、点击、缩放直观探索地理信息。结合Python的Pandas与Plotly Express,仅需几行代码即可实现散点图、热力图、线路图等可视化,支持自定义样式、动态筛选与多图层叠加,广泛应用于商业分析、环境监测、物流追踪等领域,零基础也能快速上手的空间数据分析利器。
464 1
|
JSON JavaScript 定位技术
Echarts 绘制地图(中国、省市、区县),保姆级教程!
Echarts 绘制地图(中国、省市、区县),保姆级教程!
28537 154
|
数据可视化 前端开发 数据挖掘
使用Folium在Python中进行地图可视化:全面指南
Folium是基于Python的交互式地图可视化库,依托Leaflet.js实现地理空间数据展示。本文从安装、基础使用到高级功能全面解析Folium:包括创建地图、添加标记、保存文件,以及绘制热力图、多边形和Choropleth地图等高级操作。通过展示北京市景点与全球地震数据的实际案例,结合性能优化、自定义样式和交互性增强技巧,帮助用户掌握Folium的核心功能与应用潜力,为数据分析提供直观支持。
1760 3
|
存储 数据可视化 JavaScript
echart:地图的制造&数据可视化
本文档介绍了如何使用 ECharts 和 Vue.js 制作中国地图,并展示了具体的数据绑定和样式设置方法。首先通过 Axios 获取地图数据并注册到 ECharts,然后设置地图的视觉映射、数据系列等配置项,实现地图的动态显示与交互。此外,还提供了关于时间显示、边框修饰、自定义字体及图表栏的样式调整等实用技巧。
1565 1
|
前端开发 定位技术
Echarts地图高级开发:下钻交互菜单操作按钮(1)
Echarts地图高级开发:下钻交互菜单操作按钮(1)
321 0
|
存储 关系型数据库 数据库
轻量级数据库的利器:Python 及其内置 SQLite 简介
轻量级数据库的利器:Python 及其内置 SQLite 简介
646 3