Cartopy - set_extent()扩展请求边界

15

我刚开始学习Cartopy,正在了解基本功能。

我尝试绘制特定区域的地图,但是Cartopy扩展了这个区域,并生成了一张地图,其最北端约为85oN,而我要求的是80oN。有没有办法确保我只得到我感兴趣的区域?

plt.figure(figsize=(5.12985642927, 3))
ax = plt.axes(projection=ccrs.PlateCarree(central_longitude=-35))
ax.set_extent([-100, 30, 0, 80])
ax.coastlines(resolution='110m')
gl = ax.gridlines(crs=ccrs.PlateCarree(), draw_labels=True,
              linewidth=2, color='gray', alpha=0.5, linestyle='--')

个人电脑地图

2个回答

28

在使用set_extent方法时,应确保告知该方法您指定的坐标系,例如:

您需要确保告知set_extent方法您所指定范围的坐标系统,在本例中为:

ax.set_extent([-100, 30, 0, 80], crs=ccrs.PlateCarree())

在 cartopy 中,这种方法是首选的,因为它避免了使用 set_xlim/set_ylim。这两个函数总是在投影坐标系下运算,在处理除 PlateCarree() 投影之外的其他投影时容易出现混乱。使用 set_extent 并显式指定 crs 将始终按您的预期方式运行,无论绘图所用的投影是什么。


3

您尝试过使用ax.set_xlim来设置x轴的上下限吗?这里有一些用法示例和说明。


1
谢谢。很高兴知道我可以在cartopy中使用一些matplotlib函数。 是的。添加 ax.set_ylim([0, 80]) 让我得到了我想要的结果。plt.figure(figsize=(5.12985642927, 3)) ax = plt.axes(projection=ccrs.PlateCarree(central_longitude=-35)) ax.set_extent([-100, 30, 0, 80]) ax.set_ylim([0, 80]) ax.coastlines(resolution='110m') gl = ax.gridlines(crs=ccrs.PlateCarree(), draw_labels=True, linewidth=2, color='gray', alpha=0.5, linestyle='--') http://imgur.com/a/JYzEm - Ray Bell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接