You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用geopandas重排多边形实现matplotlib美国地图阿拉斯加夏威夷移位绘图

我正在开展一个项目,使用shapefile绘制美国分级统计地图,已从美国人口普查局官网下载标准shapefile,经过简单清理(通过修改绘图轴范围剔除了多余的离岛领土)后,已实现美国本土各州在matplotlib画布范围内整齐展示,可参考下方编辑4内容。

编辑1:我使用的shapefile为cb_2018_us_state_500k.zip [3.2 MB]。
目前唯一的问题是,设置轴范围后阿拉斯加和夏威夷被裁剪无法显示,我希望将这两个州的多边形添加到绘图的左下角区域(同类地图的常规处理方式,不要求地理坐标完全准确)。
更具体来说,我需要选中代表阿拉斯加和夏威夷的多边形,将其移动到画布左下角,请问该功能是否可实现?
我已经可以通过以下布尔掩码单独筛选出阿拉斯加的多边形:

mask = df['STUSPS'] == 'AK'

但选中后不知道如何调整其位置,目前卡在这一步。

编辑2:每个州的数据都是geometry数据类型,我是否可以对多边形的每个坐标点应用变换?阿拉斯加的geometry列内容如下:

27    MULTIPOLYGON (((179.48246 51.98283, 179.48656 ...
Name: geometry, dtype: geometry

如果将坐标列表中的每个数值乘以同一个常数,是否可以实现缩放移位?我希望将阿拉斯加放置在(-125, 27)附近的左下角区域,夏威夷放在其旁边的(-112, 27)位置。

编辑3:我的现有代码如下:

import geopandas as gpd
import matplotlib.pyplot as plt

# 导入美国shape文件
df = gpd.read_file('Desktop/cb_2018_us_state_500k/cb_2018_us_state_500k.shp')

# 排除不需要展示的区域
exclude = df[~df['STUSPS'].isin(['PR', 'AS', 'VI', 'MP', 'GU','AK'])]

# 创建画布
fig, ax = plt.subplots(1, figsize=(20, 10))

exclude.plot(column="NAME", ax=ax)
_ = ax.set_xlim([-130, -64])
_ = ax.set_ylim([22, 53])

当前生成的效果图如下:
当前效果图
恳请大家提供相关思路、资源链接、讲解或示例,非常感谢。

注意:理论上我可以直接使用内政部提供的已将阿拉斯加和夏威夷移位的shapefile规避该问题,但如果后续需要添加关岛、波多黎各等领土,该方法就不适用了。

编辑4:我想要实现的效果类似R语言的同类实现方案,只是需要用Python完成。
预期效果图

内容的提问来源于stack exchange,提问作者user12035742

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 13:24:04