【问题标题】:Cartopy projection changing with different data / unexpected behaviourCartopy 投影随不同数据/意外行为而变化
【发布时间】:2018-02-23 16:01:19
【问题描述】:

我正在从底图迁移到 cartopy,所以我仍在努力寻找绳索!如果我在投影上绘制一些数据,我希望它先绘制地图,然后再绘制顶部的数据,就像这样

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

latitude = np.linspace(-90, 90, 180)
longitude = np.linspace(-180,180,360)
data = np.cos(np.deg2rad(latitude[:, np.newaxis])) + np.sin(np.deg2rad(longitude))
crs = ccrs.Orthographic(-30,45) #some sample data

ax1 = plt.subplot(121,projection=crs)
ax1.contourf(longitude, latitude,data, transform=ccrs.PlateCarree())
ax1.coastlines('110m', edgecolor='black', linewidth=0.75)

这将使用数据生成真实的地形投影。但是,如果我将一些数据设为 void/nan,它就不再绘制在同一个域上:

data[0:150,:] = np.nan

ax1 = plt.subplot(122,projection=crs)
ax1.contourf(longitude, latitude,data, transform=ccrs.PlateCarree())
ax1.coastlines('110m', edgecolor='black', linewidth=0.75)

plt.show()

从底图中,我希望绘制相同的域,但如果数据是 nan,它只会是白色的。如何强制 cartopy 停止对数据的“自动调整”并保持相同的投影?

data[0:150,:] = np.nan 如何影响下方投影的图像。 提前致谢!我试图用ax1.set_extent([-180, 180, -90, 90], ccrs.PlateCarree()) 强制它,但无济于事。

【问题讨论】:

    标签: python matplotlib cartopy


    【解决方案1】:

    Cartopy 总是尝试使域适应数据范围。如果您想查看全局绘图,请使用 ax1.set_global() 强制执行此操作:

    import cartopy.crs as ccrs
    import matplotlib.pyplot as plt
    import numpy as np
    
    latitude = np.linspace(-90, 90, 180)
    longitude = np.linspace(-180,180,360)
    data = np.cos(np.deg2rad(latitude[:, np.newaxis])) + np.sin(np.deg2rad(longitude))
    crs = ccrs.Orthographic(-30,45) #some sample data
    
    ax1 = plt.subplot(121,projection=crs)
    ax1.contourf(longitude, latitude,data, transform=ccrs.PlateCarree())
    ax1.coastlines('110m', edgecolor='black', linewidth=0.75)
    
    data[0:150,:] = np.nan
    
    ax1 = plt.subplot(122,projection=crs)
    ax1.contourf(longitude, latitude,data, transform=ccrs.PlateCarree())
    ax1.coastlines('110m', edgecolor='black', linewidth=0.75)
    ax1.set_global()
    
    plt.show()
    

    【讨论】:

    • 谢谢,我在 API 中没有注意到这个!
    猜你喜欢
    • 2014-03-18
    • 2017-07-03
    • 2021-02-25
    • 1970-01-01
    • 2019-11-07
    • 1970-01-01
    • 2017-02-17
    • 2019-01-14
    • 1970-01-01
    相关资源
    最近更新 更多