【问题标题】:Zooming in Cartopy orthographic plots放大 Cartopy 正交图
【发布时间】:2019-02-06 16:10:40
【问题描述】:

我正在尝试放大正交投影中的一些 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.

实际上,我只需要设置一个较低的边界纬度来绘制极地区域的图,这是我以前使用 Basemap 所做的。但是我不知道如何继续使用 Cartopy。

有没有办法做到这一点?

【问题讨论】:

    标签: matplotlib orthographic cartopy


    【解决方案1】:

    这里的问题是您的经度范围太大,因为 -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()
    

    【讨论】:

    • 好的,谢谢,确实是这个问题。实际上我正在寻找一种方法来设置较低的边界纬度,但如果我理解的话,只能设置一个方形框。 (-120,120) 可能令人困惑,对此感到抱歉..
    【解决方案2】:

    我在想象具有受限坐标的所需正交投影的外观方面确实存在一些小问题 - 并且据说 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()
    

    【讨论】:

    • (-120,120) 可能令人困惑,对此感到抱歉。实际上我只是在寻找一种在正交投影中设置较低边界纬度的方法。 (类似于底图中的“boundinglat”选项)
    猜你喜欢
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    • 1970-01-01
    • 2015-10-12
    • 2019-02-05
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多