在绘制带有Cartopy的地图时如何修改边距?

时间:2018-11-02 11:13:32

标签: python matplotlib cartopy

我使用cartopy(以下代码)绘制世界地图。我已设为ax = fig.add_axes([0, 0, 1, 1])。但是,输出映射始终在帧上显示较大的边距。我想将地图显示为全屏或全尺寸图像。
如何设置绘图的边距?

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

fig = plt.figure()
ax = fig.add_axes([0, 0, 1, 1])
ax = plt.axes(projection=ccrs.PlateCarree())

ax.add_feature(cfeature.LAND)
ax.add_feature(cfeature.OCEAN)
ax.add_feature(cfeature.COASTLINE)
ax.add_feature(cfeature.BORDERS)
ax.outline_patch.set_visible(False)

plt.show()

output img here

1 个答案:

答案 0 :(得分:0)

您正在创建两个轴。

  1. ax = fig.add_axes([0, 0, 1, 1])这是紧紧围绕在图形上的轴
  2. ax = plt.axes(projection=ccrs.PlateCarree())这是显示世界地图的轴,但具有通常的边距。

您当然可以选择其中一个,然后删除另一个,例如

ax = fig.add_axes([0, 0, 1, 1], projection=ccrs.PlateCarree())

这将创建一个轴,该轴紧紧位于图的一侧。原因是该地图的纵横比是固定的,与图中的不同。

因此,要使轴沿图的两侧紧,还需要设置图的大小。世界地图的纵横比为0.5,因为它的水平方向为360单位,垂直方向为180单位。因此,图形宽度需要是图形高度的两倍。例如。

fig = plt.figure(figsize=(7, 3.5))
ax = fig.add_axes([0, 0, 1, 1], projection=ccrs.PlateCarree())

结果:

enter image description here