我正在尝试以正射投影法放大一些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。
有什么办法吗?
答案 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()
答案 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()