本文主要讲解如何使用 add_province_names 函数为地图添加省级行政区名称。该函数底层已预先优化了各省份名称的显示坐标,避免了直接使用重心或中心坐标可能产生的标签重叠问题。
重要说明:geo_plotkit 是一个本地开发的绘图工具包,不会上传至 PyPI(即无法通过 pip install 安装),本系列文章仅作个人技术记录。
更新内容介绍
内置数据变化
现在,数据模块提供了更清晰的管理员边界列表和路径获取功能。
from geo_plotkit.data import list_admins, get_admin_path
import geopandas as gpd
print(list_admins())
gpd.read_file(get_admin_path(name='省'))
执行上述代码,可以列出可用的行政区划数据并读取省级数据,其数据结构如下图所示,包含了省名、代码、中英文简称以及用于标注的经纬度坐标等信息。

新增函数
本次升级的核心是引入了 add_province_names 函数。
from geo_plotkit import add_province_names
help(add_province_names)
调用 help 函数可以查看其详细文档,其参数说明清晰明了,便于快速上手。

参数 provinces=None 表示默认显示全国所有省份名称。如果传入一个省份列表,则仅显示列表内指定的省份名称。
接下来,我们就可以轻松地为全国地图添加上各省份的名称标签了。
实战案例
案例一:标注中文简称
下面的示例展示了如何在地图上标注各省的中文简称。
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
from geo_plotkit import (
set_journal_style,
cn_map,
add_province_names
)
set_journal_style('science')
fig, ax = plt.subplots(figsize=(8, 6),subplot_kw={'projection':ccrs.LambertConformal(
central_longitude=105,
central_latitude=35,
standard_parallels=(25, 47)
)})
ax, _ = cn_map(
ax,
x=0.05,
y=0.06,
style='standard',
add_grid=False,
bottom=False,
top=True,
add_nanhai=True,
)
add_province_names(ax, '中文简称', fontsize=8)
运行代码后,生成的地图效果如下,各省名称清晰、无重叠地显示在预设的优化位置上。

案例二:标注英文简称并局部高亮
此案例演示了如何在地图上标注英文简称,并通过叠加底图与局部放大图来丰富可视化效果。
import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import geo_plotkit.plot as gp
from geo_plotkit import (
set_journal_style,
cn_map,
add_province_names
)
from geo_plotkit.data import Basemap
set_journal_style('science')
fig, ax = plt.subplots(figsize=(8, 6),subplot_kw={'projection':ccrs.LambertConformal(
central_longitude=105,
central_latitude=35,
standard_parallels=(25, 47)
)})
ax, mini_ax = cn_map(
ax,
x=0.05,
y=0.06,
style='standard',
add_grid=False,
bottom=False,
top=True,
add_nanhai=True,
)
gp.add_basemap(ax, basemap=Basemap.EATLAS, clip_bounds=[60, 150, 10, 70],scale_factor=2)
gp.add_basemap(mini_ax, basemap=Basemap.EATLAS, clip_bounds=[100, 130, -10, 30],scale_factor=2)
add_province_names(ax, '英文简称', fontsize=10, color='w', fontweight='bold')
add_province_names(mini_ax, '英文简称', provinces=['海南省','广东省','广西壮族自治区','台湾省'], fontsize=5, color='w', fontweight='bold')
最终得到的地图不仅标注了各省的英文代码,还通过地形底图增强了表现力,右下角的南海放大图也单独标注了指定省份。

希望这篇关于 geo_plotkit 新功能的介绍能对你有所帮助!欢迎在云栈社区交流更多关于 Python 地理数据可视化的心得。
