放大Cartopy正交图

时间:2019-02-06 16:10:40

标签: matplotlib orthographic cartopy

我正在尝试以正射投影法放大一些Cartopy图,但是似乎无法通过简单的ax.set_extent()方法来实现。 我正在使用的代码:

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

fig = plt.figure()
ax = plt.axes(projection = ccrs.Orthographic())
ax.set_global()
ax.set_extent((-120,120,50,90), crs = ccrs.PlateCarree())

我收到以下错误:  ValueError: Failed to determine the required bounds in projection coordinates.

实际上,我只需要设置一个较低的边界纬度就可以绘制出极地图,这是我以前使用底图进行的。但是,我看不到如何进行Cartopy。

有什么办法吗?

2 个答案:

答案 0 :(得分:0)

我确实有一些小问题,想像一下如何希望具有受限坐标的期望正交投影看起来像是-据说Cartopy也有类似的理解问题:-)。
但是,当然可以使用其他(并且可能更合适)的投影; LambertConformal可能有意义。

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

fig = plt.figure()
proj = ccrs.LambertConformal(central_longitude=-96.0, central_latitude=39.0, )
ax = plt.axes(projection = proj)

ax.set_extent((-120,120,50,90), crs = ccrs.PlateCarree())

ax.coastlines(resolution='110m')
ax.gridlines()
plt.show()

enter image description here

答案 1 :(得分:0)

这里的问题是您的经度范围太大,因为-120或120都不在中心经度/纬度为0(它们位于其后)的正射影碟上。您可以先查询什么是全球经度范围,然后使用它代替(-120,120)。

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

fig = plt.figure()
ax = plt.axes(projection = ccrs.Orthographic())
ax.set_global()

global_extent = ax.get_extent(crs=ccrs.PlateCarree())
ax.set_extent(global_extent[:2] + (50, 90), crs=ccrs.PlateCarree())
ax.coastlines()

Orthographic projection with limited extent