用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效果等特性,打造更具说服力的数据可视化作品。

目录
相关文章
|
4月前
|
数据采集 数据可视化 定位技术
爬虫+GIS:抓取POI数据并可视化分布——从零开始的实战指南
本文介绍如何结合Python爬虫与GIS技术,从高德地图API抓取咖啡馆等POI数据,经清洗处理后,利用Folium、GeoPandas实现交互式地图与热力图可视化,涵盖反爬策略、坐标转换与性能优化,助你构建完整的地理数据分析流程。
797 0
|
机器人
如何查询OpenAI账户余额?ChatGPT怎么查看账户余额的方法
ChatGPT是美国OpenAI研发的聊天机器人程序,也是最近火爆全网的热门应用和话题之王。很多用户在使用openai的时候不知道如何查询OpenAI账户余额?
3576 0
|
4月前
|
SQL 存储 数据库
Python实现员工管理系统:从基础功能到完整应用开发指南
本文介绍如何用Python从零开发员工管理系统:基于SQLite实现员工信息、薪资计算、考勤记录等核心功能,支持命令行与Flask Web双界面,兼顾易用性与可扩展性,适合中小团队快速落地。(239字)
363 1
|
5月前
|
数据采集 数据可视化 数据挖掘
从CSV到交互式地图:用Plotly Express可视化地理数据
交互式地图让数据“活”起来:通过悬停、点击、缩放直观探索地理信息。结合Python的Pandas与Plotly Express,仅需几行代码即可实现散点图、热力图、线路图等可视化,支持自定义样式、动态筛选与多图层叠加,广泛应用于商业分析、环境监测、物流追踪等领域,零基础也能快速上手的空间数据分析利器。
343 1
|
3月前
|
测试技术 数据安全/隐私保护 开发者
Python操作PDF页面详解:删除指定页的完整方案
本文对比PyPDF2、Spire.PDF和PyMuPDF三大Python库,详解PDF删除指定页的实现方案:PyPDF2轻量易用,Spire.PDF企业级稳定,PyMuPDF性能卓越。附真实代码、性能测试(PyMuPDF快3倍)及避坑指南,助开发者高效处理PDF页面。(239字)
339 1
|
JSON JavaScript 定位技术
Echarts 绘制地图(中国、省市、区县),保姆级教程!
Echarts 绘制地图(中国、省市、区县),保姆级教程!
26954 154
|
2月前
|
Python
使用 Python 实现 Word 文档文本格式化全解析
周一早九点,领导催改50页合同格式?别再手动滚动了!用Python+python-docx库,2秒自动完成公司名加粗红色、段落对齐、标题样式等批量排版。掌握Document-Paragraph-Run三层结构,轻松搞定Word自动化,解放双手,专注真正重要的事。(239字)
308 0
|
数据可视化 前端开发 数据挖掘
使用Folium在Python中进行地图可视化:全面指南
Folium是基于Python的交互式地图可视化库,依托Leaflet.js实现地理空间数据展示。本文从安装、基础使用到高级功能全面解析Folium:包括创建地图、添加标记、保存文件,以及绘制热力图、多边形和Choropleth地图等高级操作。通过展示北京市景点与全球地震数据的实际案例,结合性能优化、自定义样式和交互性增强技巧,帮助用户掌握Folium的核心功能与应用潜力,为数据分析提供直观支持。
1531 3
|
算法 数据可视化 API
使用Yolov5实现智能垃圾分类系统
使用Yolov5实现智能垃圾分类系统
2579 0
|
SQL NoSQL 数据库
深度解密 pandas 的行列转换,以及一行变多行、一列变多列
深度解密 pandas 的行列转换,以及一行变多行、一列变多列
1154 0

热门文章

最新文章