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

如何移除Cartopy/Matplotlib绘图中额外出现的边框与坐标轴?

解决方案

问题根源

你代码中重复创建了坐标轴对象:调用plt.subplots(figsize=(8,6))时已经生成了一个默认的笛卡尔坐标系坐标轴,后续又通过plt.axes(projection=proj)新建了北极投影坐标轴叠在上方。你之前所有隐藏边框的代码仅作用于上层的投影轴,底层未处理的默认轴就是残留0-1范围外层边框的原因。

修复方案

方案1:创建子图时直接指定投影(推荐)

不需要二次创建坐标轴,在生成子图时直接传入投影参数即可,完整修改后代码如下:

import matplotlib.pyplot as plt
import cartopy.crs as ccrs

# 设置投影信息
proj = ccrs.NorthPolarStereo(true_scale_latitude = 75)
# 创建画布和子图时直接指定投影
fig, ax = plt.subplots(figsize=(8,6), subplot_kw={'projection': proj})
ax.coastlines('10m')
ax.set_extent([-180, 180, 65, 90], crs=ccrs.PlateCarree())

方案2:手动隐藏多余的默认坐标轴

如果不想调整原有创建逻辑,在创建完投影坐标轴后,手动隐藏底层的默认轴即可:

import matplotlib.pyplot as plt
import cartopy.crs as ccrs

# 设置投影信息
proj = ccrs.NorthPolarStereo(true_scale_latitude = 75)
fig, ax = plt.subplots(figsize=(8,6))
ax = plt.axes(projection=proj)
# 隐藏第一个生成的默认坐标轴
fig.axes[0].set_visible(False)
ax.coastlines('10m')
ax.set_extent([-180, 180, 65, 90], crs=ccrs.PlateCarree())

两种方案都可以完全移除外层多余的边框和坐标轴,不需要额外调用你之前试过的spines隐藏、axis off之类的代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:45:04