找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

857

积分

0

好友

117

主题
发表于 4 小时前 | 查看: 2| 回复: 0

本文主要讲解如何使用 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='省'))

执行上述代码,可以列出可用的行政区划数据并读取省级数据,其数据结构如下图所示,包含了省名、代码、中英文简称以及用于标注的经纬度坐标等信息。

包含省份名称、代码、坐标及几何数据的GeoDataFrame表格截图

新增函数

本次升级的核心是引入了 add_province_names 函数。

from geo_plotkit import add_province_names

help(add_province_names)

调用 help 函数可以查看其详细文档,其参数说明清晰明了,便于快速上手。

add_province_names函数的帮助文档截图

参数 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 地理数据可视化的心得。

爱心表情包




上一篇:为什么你的Pandas代码那么慢?避开循环中的loc/iloc,性能提升百倍
下一篇:基于FPGA与百度语音的智能计算器:软硬件协同设计实战
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-26 18:42 , Processed in 0.544676 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表